MySQL-MySQL中的UNION是怎样去除重复的?
MySQL中的UNION是怎样去除重复的?例如两个表都是有a、b、c、d字段,MySQL使用UNION查询时,是判断两个表中的a、b、c、d全相同(数据类型和值都相等)时才算做是相同的记录去掉一个,还是只用判断关键字a相同就认为是重复的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
手册上没写按照什么规则对比,也就说了下带ALL和不带ALL的区别,如下:
UNION用于把来自许多SELECT语句的结果组合到一个结果集合中。
列于每个SELECT语句的对应位置的被选择的列应具有相同的类型。(例如,被第一个语句选择的第一列应和被其它语句选择的第一列具有相同的类型。)在第一个SELECT语句中被使用的列名称也被用于结果的列名称。
如果您对UNION不使用关键词ALL,则所有返回的行都是唯一的,如同您已经对整个结果集合使用了DISTINCT。如果您指定了ALL,您会从所有用过的SELECT语句中得到所有匹配的行。
手册上写的很明白
union[all|distinct]
默认用的是 distinct 进行排重的
回去自己仔细试了一下,经过在Mysql上的试验表明:MySQL在UNION去重时,只是比对两条数据的值是否相同,并不去判断值的数据类型是否一致,只要两条数据的每一列数值相等,就认为是重复的数据,UNION出来的结果只会一条