2012-08-15 2 views
0
SELECT * 
FROM 
(
    SELECT case_id,diagnosis_title,updated 
    FROM tbl_case 
    order by updated desc 
) as table1 

UNION 

select * 
FROM 
(
    select image_id,image_title,updated 
    from tbl_image 
    order by updated desc 
) as table2 

혼합 된 순서로 레코드를 표시하는 방법. 현재 tbl_Case 레코드가 표시되고 tbl_image 레코드가 두 번째 섹션에 표시됩니다.조합순으로 날짜순으로 정렬

출력을 혼합하고 싶습니다. ORDER BY은 두 테이블 모두에서 작동해야합니다.

답변

3

외부 선택 *을 수행하는 이유는 무엇입니까? 그들은 이미 선택한 모든 것을 다시 선택하기 때문에 무의미합니다. 이 두 결과에서 모든 레코드를 정렬합니다에 의해 순서가 함께 위의 설정대로 대신,

(SELECT case_id, diagnosis_title, ... FROM ...) 
UNION 
(SELECT image_id, image_title, ... FROM ...) 
ORDER BY ... 

장소에 브라켓으로 :

MySQL의 조합으로

, 이것은 전체 결과 세트를 주문하는 방법이다 각 개별 쿼리의 결과를 개별적으로 정렬 할 수 있습니다.

1

검색어를 간단히 입력하십시오.

SELECT case_id,diagnosis_title,updated 
    FROM tbl_case 
    UNION 
    select image_id,image_title,updated 
    from tbl_image 
    ORDER BY updated desc 
+0

각 선택에 대해 한도를 추가 할 수 있습니다. – user1127564

0

당신은

CREATE TEMPORARY TABLE TempTable 
    (id int, title varchar(100), updated tinyint(1)); 

INSERT TempTable 
SELECT case_id, diagnosis_title, updated FROM tbl_case ORDER BY updated DESC; 
INSERT TempTable 
SELECT image_id, image_title, updated FROM tbl_image ORDER BY updated DESC; 

SELECT * FROM TempTable; 

은 분명히, 이것은 당신이 요구하는 무슨 생각을 달성하기 위해 노동 조합 대신 임시 테이블을 사용 (난 그냥 데이터 유형에 대해 추측하고있어),이 작업을 수행 할 수 있습니다.

관련 문제