union 聯合
union的作用:把兩次或多次查詢結果合並起來。
典型案例:select good_id,good_name from good where shop_price>5000 or shop_price<20;
select good_id,good_name from good where shop_price>5000 union select good_id,good_name from good where shop_price<20;
1.union的要求:
兩次查詢的列數要一致;
推薦:查詢的每一列,相對應的列類型也一樣。
例如:select id,sum(num) from (select * from ta union select * from tb) as tmp group by id;
2.多次sql語句取出的列名可以不一致,此時以第一次sql的列名為准。
3.如果不同的語句中取出的行,有完全相同的值(每個列的值都相同),那么相同的行將會合並(去重復)。
如果想不去重復,可以加all進行指定。
例如:select * from ta union all select * from tb;
4.如果子句中有order by 或limit 等,需要加“()”進行括起來。推薦放到所有子句之后,即--對最終合並后的結果進行排序。
連接查詢
連接查詢包含:左連接(left join)、右連接(right join)、內連接(inner join)。
左連接:以左表為准,去右表查找數據,若在右表未找到,則用NULL補齊;(推薦使用左連接,代替右連接)
右連接:以右表為准,去左表查找數據,若在左表未找到,則用NULL補齊;
內連接:查詢左右表都有的數據,即:不要左右連接中NULL的那部分。
如:A left join B ==== B right join A