mysql - 合并具有不同列的两个表mysql

标签 mysql sql

我想合并两个具有不同列的表 mysql。 例如

表 1:

-------------------------------------------------------------
item_id   title   slug   type   views   updatedAt   createdAt
-------------------------------------------------------------
 1    sometitle someslg  1     43454    timestamp   timestamp
 2    sometitle someslg  1     43566    timestamp   timestamp

表 2:

-------------------------------------------------------------
id    ptitle   slug     pviews   updatedAt   createdAt
-------------------------------------------------------------
 1  sometitle  someslg  3434    timestamp   timestamp
 2  sometitle  someslg  6454    timestamp   timestamp
 3  sometitle  someslg  5454    timestamp   timestamp

以上表格为示例。 我已与 UNION 合并。这是我的查询

SELECT * ((SELECT t1.item_id,t1.title,t1.slug,t1.type,t1.views,t1.updatedAt,t1.createdAt 
FROM table1
t1) UNION ALL (SELECT t2.id,t2.ptitle,t2.slug,'',t2.pviews,t2.updatedAt,t2.createdAt)) t3 
ORDER BY t3.item_id ASC

这在执行查询后工作正常,我将得到类似的结果

-------------------------------------------------------------
item_id   title   slug   type   views   updatedAt   createdAt
-------------------------------------------------------------
 1    sometitle someslg  1     43454    timestamp   timestamp
 1    sometitle someslg        3434     timestamp   timestamp
 2    sometitle someslg  1     43566    timestamp   timestamp
 2    sometitle someslg        6454     timestamp   timestamp
 3    sometitle someslg        5454     timestamp   timestamp

但我想要结果中的虚拟列显示来自哪个表的行,如下所示

--------------------------------------------------------------------------
item_id   title   slug   type   views   updatedAt   createdAt   from_tbl
--------------------------------------------------------------------------
 1    sometitle someslg  1     43454    timestamp   timestamp   t1
 1    sometitle someslg        3434     timestamp   timestamp   t2
 2    sometitle someslg  1     43566    timestamp   timestamp   t1
 2    sometitle someslg        6454     timestamp   timestamp   t2
 3    sometitle someslg        5454     timestamp   timestamp   t2

最佳答案

只需将列添加到:

SELECT t3.*
FROM ((SELECT t1.item_id, t1.title, t1.slug, t1.type, t1.views, t1.updatedAt, t1.createdAt, 't1' as from_tbl
       FROM table1 t1
      ) UNION ALL
      (SELECT t2.id, t2.ptitle, t2.slug, '', t2.pviews, t2.updatedAt, t2.createdAt, 't2'
      )
     ) t3
ORDER BY t3.item_id ASC

关于mysql - 合并具有不同列的两个表mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35292522/

相关文章:

mysql - SQL - 如果 ID 之一具有特定列值,则选择所有匹配的 ID

mysql - mariadb 在短时间内生成巨大的 binlog,其中包含不可读的条目

mysql - 产品名称搜索查询

mysql - 为什么我会收到此 mysqlclient.lib 错误?

php - 在mysql查询ORDER BY中更改时间格式

sql - 如何使用 PostgreSQL 触发器来存储更改(SQL 语句和行更改)

sql - 如果没有返回行,则返回具有空值的行

sql - 日期值返回随机整数 - oracle

mysql - 如何合并同一个表中的每 2 个连续列

mysql - 如何多次打开/关闭mysql连接?