php - MySQL 返回按组分隔的联合选择结果

标签 php mysql union

我想知道是否可以返回按别名分组的 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]
]

我试过了,但是没用。也许我做得不好。 这可以通过单个查询来完成吗?或者我必须执行两个单独的查询。 谢谢。

最佳答案

您不能使用 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;

关于php - MySQL 返回按组分隔的联合选择结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41720461/

相关文章:

Mysql union 如何将返回的 3 行分组为单行

mysql - 如何仅选择最近(和多个)值一次?

php - Laravel 5 + Eloquent toJson/toArray 导致奇怪的段错误

php - 检测哪个按钮被按下

php 聊天占用大量内存! Jquery、PHP 和 MySQL

c# - 搜索时 SQL 查询出错

vba - 从 VBA 中的并集生成的行范围中删除行

PHP OOP Mysql 查询

PHP如何计算单元格数

mysql - 当我的列数据类型为 SET 时,我需要使用什么类型的 SQL 查询?