2012-11-16 94 views
0

我試圖組合這兩個表,然後按一列(stamp)對其進行排序,並對第二個表的id字段進行別名。我試過連接,合併,但似乎沒有任何工作。我也試圖將它們分組由mm加入並訂購兩個具有相同列的表

note

id | mm | stamp | 
========================== 
    1 | 5 | 2009-12-11 | 
    2 | 33 | 2010-09-10 | 
    3 | 22 | 2011-07-08 | 
    4 | 1 | 2012-05-06 | 

note_admin

id | mm | stamp | 
========================== 
    1 | 5 | 2009-08-15 | 
    2 | 5 | 2011-11-11 | 
    3 | 5 | 2012-01-08 | 
    4 | 35 | 2012-02-06 | 

查詢我想會的工作:

(SELECT * FROM note WHERE mm=5) 
UNION 
(SELECT id AS a_id, mm, stamp FROM note_admin WHERE mm=5) 
ORDER BY stamp DESC 

預期結果

id | a_id | mm | stamp | 
================================ 
    | 3 | 5 | 2012-01-08 | 
    | 2 | 5 | 2011-11-11 | 
    1 |  | 5 | 2009-12-11 | 
    | 1 | 5 | 2009-08-15 | 

我甚至不知道這是否可能。我找到了一種在PHP中對它進行排序的方法,但如果它可以在mySQL中完成,它會容易得多。謝謝。

+0

字段名稱必須相同。 SELECT * FROM in ... –

+0

@Glavić與之相反 - 在UNION查詢中不選擇SELECT *。始終要明確說明列順序! –

+0

如果表是相同的,則不需要。 –

回答

0

我想你的意思是這樣,(通過永遠不能確定有關訂單)注意,同4個名:

(SELECT a_id as NULL, note.* FROM note WHERE mm=5) UNION (SELECT id AS a_id, NULL as id, mm, stamp FROM note_admin WHERE mm=5) ORDER BY stamp DESC 
+0

這似乎工作: (SELECT null作爲a_id,id,mm,戳記從注意WHERE mm = 5)UNION(SELECT id AS a_id,NULL作爲id,mm,stamp FROM note_admin WHERE mm = 5)ORDER BY stamp DESC –

+0

'ORDER BY'是好的。 MySQL手冊說:要使用ORDER BY或LIMIT子句排序或限制整個UNION結果,請將單個SELECT語句括起來,並在最後一個之後放置ORDER BY或LIMIT。 –

相關問題