天天看點

MySQL中Union聯合查詢使用實踐總結

聯合查詢:将多次查詢(多條select語句),在記錄上進行拼接(一般記錄數增加,但是字段數不會增加)

這裡需要注意的是,多條select 語句字段數必須一緻,字段類型可以不同!

文法格式:

select 1..
union[union 選項]
select 2..      

union選項:與select選項一樣,有兩個

  • All : 保留所有記錄;
  • Distinct : 去重;預設值

對記錄去重:

select id ,age from p_user 
UNION [DISTINCT]
SELECT id,age from p_user_2;      

保留所有記錄:

select id ,age from p_user 
UNION ALL
SELECT id,age from p_user_2;      

字段類型可以不一緻

select id ,age from p_user 
UNION ALL
SELECT name,age from p_user_2;      

查詢結果字段名隻保留第一張表的字段。

MySQL中Union聯合查詢使用實踐總結

聯合查詢的意義

1.查詢同一張表但是需求不同;

如查詢學生資訊,男生身高升序,女生身高降序。

2.多表查詢:

多張表的結構是完全一樣的,儲存的資料結構也是一樣的;

多表結構不同,但是擁有相同的所需字段。

  • 如查詢學生資訊,男生身高升序,女生身高降序。
  • 聯合查詢中,order by 不能直接使用,需要對查詢語句使用括号才行;
  • 若要order by生效,還必須使用limit搭配,可以直接limit 最大數。
(SELECT * from p_user where sex='femal' ORDER BY age DESC LIMIT 100)

UNION all

(select * from p_user where sex='male' ORDER BY age asc LIMIT 100 )      

繼續閱讀