聯(lián)合查詢
一、UNION和UNION ALL的作用和語法
UNION 用于合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集,并消去表中任何重復(fù)行它掂。
UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列秸脱,列也必須擁有相似的數(shù)據(jù)類型。
同時(shí)俊啼,每條 SELECT 語句中的列的順序必須相同.
SQL UNION 語法:
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2
注釋:默認(rèn)地,UNION 操作符選取不同的值左医。如果允許重復(fù)的值授帕,請使用 UNION ALL。
當(dāng) ALL 隨 UNION 一起使用時(shí)(即 UNION ALL)浮梢,不消除重復(fù)行
SQL UNION ALL 語法
SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2
注釋:另外跛十,UNION 結(jié)果集中的列名總是等于 UNION 中第一個(gè) SELECT 語句中的列名。
注意:1秕硝、UNION 結(jié)果集中的列名總是等于第一個(gè) SELECT 語句中的列名
2芥映、UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型远豺。同時(shí)屏轰,每條 SELECT 語句中的列的順序必須相同
二、union的用法及注意事項(xiàng)
union:聯(lián)合的意思憋飞,即把兩次或多次查詢結(jié)果合并起來霎苗。
要求:兩次查詢的列數(shù)必須一致
推薦:列的類型可以不一樣,但推薦查詢的每一列榛做,想對應(yīng)的類型以一樣
可以來自多張表的數(shù)據(jù):多次sql語句取出的列名可以不一致唁盏,此時(shí)以第一個(gè)sql語句的列名為準(zhǔn)。
如果不同的語句中取出的行检眯,有完全相同(這里表示的是每個(gè)列的值都相同)厘擂,那么union會將相同的行合并,最終只保留一行锰瘸。也可以這樣理解刽严,union會去掉重復(fù)的行。
如果不想去掉重復(fù)的行避凝,可以使用union all舞萄。
如果子句中有order by,limit眨补,需用括號()包起來。推薦放到所有子句之后倒脓,即對最終合并的結(jié)果來排序或篩選撑螺。
如:
(select * from a order by id) union (select * from b order id);
在子句中,order by 需要配合limit使用才有意義崎弃。如果不配合limit使用甘晤,會被語法分析器優(yōu)化分析時(shí)去除。