如何在 SQL 中使用 union 和 union all
概念
MySQL UNION
运算符用于将两个或多个SELECT
语句的结果组合成一个结果集。多个 SELECT 语句将删除重复数据。
UNION
运算符选择不同的值。如果允许重复值,可以使用UNION ALL
基本语法
-- unionSELECT column_name(s ) FROM table1UNIONSELECT column_name(s) FROM table2;-- union allSELECT column_name(s) FROM table1UNION ALLSELECT column_name(s) FROM table2; pre>注意:每个
SELECT
语句UNION
内的列数必须相同各列也必须具有相似的数据类型
每个 < 中的列顺序code>SELECT 语句必须相同
使用提示
我们发现使用
UNION
得到的结果必须是同样的,所以我们不得不提到两个关键字in
和or
-- inselect * from users where name in ('sbc', 'bhy');-- orselect * from userswhere name = 'sbc' or name = 'bhy';select * from userswhere name = 'sbc' or tel = '123456';-- unionselect * from userswhere name = 'sbc'unionselect * from userswhere name = 'bhy';select * from userswhere name = 'sbc'unionselect * from userswhere tel = '123456';通过user中的这些select语句表(用户)让我们比较一下
如果我们想要名为 sbc 或 bhy 的用户,我们可以使用
in
、or
和union< /code >两者都可以实现
如果有数据量大了,差距就会很明显。如果name字段有索引,这些方法是相等的;但如果像
或
的第二种情况写法,数据库会查找这两个字段的索引吗?答案是否定的。数据库只会查找一个字段的索引,而另一个字段则需要全局查询遇到大量数据时这会花费很多时间,但是
的第二种方法>union
方法将引用Index两次。差异
union
:对两个结果集进行并集运算,排除重复行,相当于distinct
,并执行同时按默认规则排序
union all
:对两个结果集进行并集运算,包括重复行,即显示所有结果,无论是否是重复的;提示
合并所有 o只合并查询结果,不进行去重和排序操作。在不进行重复数据删除的情况下,使用union all的执行效率比union高这篇《如何在SQL中使用union和union all》这篇文章就到此为止。感谢您的阅读!相信大家对于“SQL中如何使用union和union all”都有一定的了解。如果您想了解更多知识,请关注行业资讯频道。
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在 SQL 中使用 union 和 union all