首页 > 解决方案 > 在 MySQL 中,如何从两个不同的表中选择 *?

问题描述

我在 MySQL 上有两个单独的表,我想进行查询,从它们中选择 * 并且我想按 id(或日期)对它们进行排序。问题是 id 会发生冲突,因为会有两篇具有相同 id 的文章(每个表中的一篇)。

有没有一种方法可以在一个查询中显示每个表的所有文章?

编辑:

它们的列数不同。但是,我将选择它们每个的相同列。所以我会从table1和table2中选择“id、map、title、summary、image、date、publish”。(因为两个表都有完全相同的列)。

然后我想在一个网页上显示 table1 和 table2 中的所有文章。在完全相同的网格中。

这甚至可能还是我需要在 MySQL 中合并两个表?

标签: phpmysql

解决方案


如果两张表的列数相同且对应列的数据类型相同,则可以使用UNION ALL:

SELECT * FROM table1
UNION ALL
SELECT * FROM table2
ORDER BY id

如果您还想区分这些行以便知道它们来自哪个表,您可以为它们中的每一个创建一个虚拟的第一列,如下所示:

SELECT '1' fromtable, * FROM table1
UNION ALL
SELECT '2' fromtable, * FROM table2
ORDER BY id

推荐阅读