2012-08-15 89 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

你正在做這些外部選擇*的任何原因?他們是毫無意義的,因爲他們只是重新選擇你已經選擇的所有東西。

與MySQL工會,你這是怎麼訂購整個結果集:

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

隨着地方包圍,因爲它的正上方,通過訂單將所有記錄從兩個結果進行排序集在一起,而不是分別對每個單獨的查詢結果進行排序。

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 2012-08-18 16:31:20

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; 

顯然,這種使用臨時表,而不是一個聯盟來實現什麼,我認爲你所要求的。