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

联合查询:将多次查询(多条select语句),在记录上进行拼接(一般记录数增加,但是字段数不会增加)

这里需要注意的是,多条select 语句字段数必须一致,字段类型可以不同!

【1】 语法格式

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 bookid ,card from book b limit 10)
union all
(select address,zipcode from people p limit 10)

在这里插入图片描述


【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 )

这里写图片描述

union、union all在优化中的实践

如果不考虑去重,那么在数量级比较大的时候建议使用union all。因为union all不考虑去重,性能会高一点。为什么说数量级这个问题呢?因为小数量级谈不上性能优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流烟默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值