MySQL中Union联合查询使用实践总结

xiaoxiao2021-02-28  95

联合查询:将多次查询(多条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;

查询结果字段名只保留第一张表的字段。


联合查询的意义

1.查询同一张表但是需求不同;

如查询学生信息,男生身高升序,女生身高降序。

2.多表查询:

多张表的结构是完全一样的,保存的数据结构也是一样的; 多表结构不同,但是拥有相同的所需字段。


联合查询中的order by

如查询学生信息,男生身高升序,女生身高降序。

联合查询中,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 )

转载请注明原文地址: https://www.6miu.com/read-48785.html

最新回复(0)