mysql如何实现合并结果集并去除重复值

发布时间:2022-12-28 09:49:39 作者:iii
来源:亿速云 阅读:156

本篇内容介绍了“mysql如何实现合并结果集并去除重复值”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

mysql 合并结果集并去除重复值

SELECT DISTINCT c.parent_id from (     SELECT parent_id  FROM tp_goods_category a join tp_goods g on a.id = g.cat_id GROUP BY parent_id UNION ALL  SELECT cat_id FROM tp_goods GROUP BY cat_id ) c;

先去除每个结果集中的重复值 以 group by 方式除去

SELECT parent_id  FROM tp_goods_category a join tp_goods g on a.id = g.cat_id GROUP BY parent_id 

SELECT cat_id FROM tp_goods GROUP BY cat_id

mysql如何实现合并结果集并去除重复值

然后合并两个结果集 生成一个新的结果集 (或者可以成为新表)  在 使用DISTINCT  去除合并结果集中的重复值  注意  必须给  新结果集取一个别名  比如例子中的  c

mysql如何实现合并结果集并去除重复值

新的查询结果

mysql如何实现合并结果集并去除重复值

此语句为了删除分类表中   在goods表中不存在的  分类id  且 级别为第二级别  

mysql如何实现合并结果集并去除重复值

mysql 合并结果集(union,union all)

我需要在一个sql的执行结果中,显示两个或两个以上的where条件的结果(select 列的结构相同)。

考虑使用union,或union all 。

union 与 union all 执行结果不同

UNION 删除重复的记录再返回结果,即对整个结果集合使用了DISTINCT。结果中无重复数据。

UNION ALL 将各个结果合并后就返回,不删除重复记录。如果结果中有重复数据,则包含重复数据。

例如,

mysql> SELECT * FROM world.city where ID=2020 UNION SELECT * FROM world.city where ID=2020;
+------+-------+-------------+--------------+------------+
| ID   | Name  | CountryCode | District     | Population |
+------+-------+-------------+--------------+------------+
| 2020 | Tieli | CHN         | Heilongjiang |     265683 |
+------+-------+-------------+--------------+------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM world.city where ID=2020 UNION ALL SELECT * FROM world.city where ID=2020;
+------+-------+-------------+--------------+------------+
| ID   | Name  | CountryCode | District     | Population |
+------+-------+-------------+--------------+------------+
| 2020 | Tieli | CHN         | Heilongjiang |     265683 |
| 2020 | Tieli | CHN         | Heilongjiang |     265683 |
+------+-------+-------------+--------------+------------+
2 rows in set (0.00 sec)

对UNION,UNION ALL的结果继续处理,需要加括号

比如要对合并后的结果集进行ORDER BY,LIMIT等操作需要对合并对象单个的SELECT语句加上括号。

并且把整体结果的条件ORDER BY,LIMIT等放到最后一个SELECT的括号后面。

例如,

(SELECT * FROM world.city
WHERE CountryCode = 'JPN' AND Name LIKE 'nishi%') 
UNION ALL 
(SELECT * FROM world.city
WHERE CountryCode = 'CHN' AND Population >= 5000000) 
LIMIT 5;

mysql中,UNION,UNION ALL的性能/效率不同

从效率上说,UNION ALL 要比UNION快很多。

所以,如果可以确认合并的结果集中不包含重复的数据的话,或者需要的结果中即使包含重复也无所谓,那么就使用UNION ALL。

UNION

UNION ALL

“mysql如何实现合并结果集并去除重复值”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. MySQL知识点之InnoDB中的行级锁是什么
  2. mysql如何增加唯一索引

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:Java如何利用随机分钱模拟财富变化

下一篇:Python configparser模块怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》