[英]MySQL return union select results separated in groups
我想知道是否有可能从UNION中按其别名分组返回结果。 例如:
(SELECT * FROM table1) AS first
UNION
(SELECT * FROM table2) AS second
这样的结果是:
first = contains all table1 rows
second = contains all table2 rows
实际上,我想要这样的关联数组:
[]=>[
'first'=>[table1 results],
'second'=>[table2 results]
]
我试过了,但是没有用。 也许我做得不好。 可以通过单个查询完成此操作,还是我必须做2个单独的查询。 谢谢。
您无法用union
进行此操作,因为它会删除重复项。 您可以与union all
。
一种方法是:
SELECT t.*, 0 as which FROM table1 t
UNION ALL
SELECT t.*, 1 FROM table2 t
ORDER BY which;
如果您不想在输出中看到which
,请使用子查询:
select . . .
from (select t.*, 0 as which from table1 t union all
select t.*, 1 as which from table1 t
) t
order by which;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.