2009-12-02 53 views
1

,如果我有表,如:聯合MySQL查詢

table_1: 1, 'Hello My Name is Hal', '2009:11:02 08:42' 
table_1: 2, 'Hello My Name is Dave', '2009:11:02 08:30' 
table_2: 1, 'Ima all #red due to twitter', '2009:11:02 09:42' 

並讓想象所有的表列具有相同的col_names

有什麼辦法,我可以做一個查詢到一個返回結果選擇不同的行

東西線沿線的:

SELECT * FROM table_1, table_2 ORDER BY dateReg DESC 

所以我回報將是這樣的:

1, 'Ima all #red due to twitter', '2009:11:02 09:42' 
1, 'Hello My Name is Hal', '2009:11:02 08:42' 
2, 'Hello My Name is Dave', '2009:11:02 08:30' 

當我嘗試運行上面的查詢,我得到歧義錯誤(顯然... .. Duhh:d),但有什麼辦法,我們能做到這一點查詢,而不是在排序使用PHP的代碼。

任何想法?在此先感謝

+1

它實際上是被稱爲JOIN,一個「聯合」是不同的東西:) – NDM

+0

我知道呢,所以我有什麼JOIN來命名不同,因爲我coudnt想想別的什麼來稱呼它,結果是它的一個聯盟:D –

回答

3

可以使用UNION(或UNION ALL)到結果,從多個查詢組合:

SELECT * FROM table_1 UNION ALL SELECT * FROM table_2 

(簡單UNION將刪除重複,UNION ALL將r E打開所有結果。)

+0

ty genious ....... 15個字符 –

0

使用表aliasas;)

喜歡的東西:

SELECT table1.id AS table1_id, table2.id AS table2_id, table3.id AS table3_id FROM table1, table2, table3

+1

這是一個交叉連接,這不是問題所在。 –

1

您可以使用UNION查詢

0

使用最初的例子爲基礎,有沒有辦法在那裏表2可以與表1相同的ID超載行?

所以預期的結果將是:

1, 'Ima all #red due to twitter', '2009:11:02 09:42' 
2, 'Hello My Name is Dave', '2009:11:02 08:30' 
+1

一個可能的解決方案是使用子選擇 - SELECT * FROM((SELECT * FROM table_1)UNION(SELECT * FROM table_2))AS'result' GROUP BY'result' .'id' – cris