MySQL数据库中select查询结果集如何合并
MySQL中的UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,UNION ALL 要⽐UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使⽤UNION ALL,如下:
select * from table1 union all select * from table2
使⽤Union,则所有返回的⾏都是唯⼀的,如同您已经对整个结果集合使⽤了DISTINCT
使⽤Union all,则不会排重,返回所有的⾏
如果想使⽤ORDER BY或LIMIT⼦句来对全部UNION结果进⾏分类或限制,则应对单个地SELECT语句加圆括号,并把ORDER BY或LIMIT放到最后⼀个的后⾯:
(SELECT a FROM table1 WHERE a=10 AND B=1)
UNION
(SELECT a FROM table2 WHERE a=11 AND B=2)
ORDER BY a LIMIT 10;
⿇烦⼀点也可以这样做:
sql中union多表合并
select userid from (
select userid from testa union all select userid from testb) as t
order by userid limit 0,1;
如果你还想group by,⽽且还有条件,那么:
select userid from (select userid from testa union all select userid from testb) t group by userid having count(userid) = 2;
注意:在union的括号后⾯必须有个别名,否则会报错
当然了,如果当union的⼏个表的数据量很⼤时,建议还是采⽤先导出⽂本,然后⽤脚本来执⾏
因为纯粹⽤sql,效率会⽐较低,⽽且它会写临时⽂件,如果你的磁盘空间不够⼤,就有可能会出错

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。