聯合查詢:将多次查詢(多條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;
查詢結果字段名隻保留第一張表的字段。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iMzETN5YzY5ITNwIDMjBTYyYzXyMDOyMjM4AzLcZDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
聯合查詢的意義
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 )