站內搜尋

Wednesday, January 30, 2013

[MYSQL] 如何把兩個以上的資料表串起來 進行合併查詢 (聯集)

假設我們有兩個資料表 【三年一班】 、 【三年二班】 的學生清單,兩個表的欄位都只有【學號】、【姓名】,那我們要如何用一次 SELECT 去查這兩個班級有沒有叫做"王小明"的同學呢?很簡單...
SELECT no,name FROM table_1 WHERE name='王小明' UNION SELECT no,name FROM table_2 WHERE name='王小明'
如果兩個班級都有王小明,上述的方式查出來的結果只會有一筆資料,如果需要兩個班級的王小明都列出來,我們可以用
SELECT no,name FROM table_1 WHERE name='王小明' UNION ALL SELECT no,name FROM table_2 WHERE name='王小明'
註1:要進行聯集查詢,前提是資料欄位數量必須相符。
註2:資料欄位型別若不相同,會嚐試自動轉換,如無法轉換,則會失敗。
註3:如果兩個表的欄位名稱不一樣,可以用AS去設成一樣,請見 [MySQL Note.] 聯合查詢筆記
註4:如果要排序的話,需要拉到外面來做,不然會報錯,語法如下:
SELECT * FROM ( SELECT no,name FROM table_1 WHERE name='王小明' UNION ALL SELECT no,name FROM table_2 WHERE name='王小明' ) AS a ORDER BY no

No comments:

Post a Comment