首页 > 解决方案 > 如何从具有相同列/字段名称的表上的连接结果轻松创建表

问题描述

我正在尝试对具有相同架构的 2 个表进行连接:

SELECT * FROM `tl1` INNER JOIN `tl2` ON tl1.urlid = tl2.urlid

这工作正常,直到我决定修改查询以保存它:

CREATE TABLE `tableName` SELECT * FROM `tl1` INNER JOIN `tl2` ON tl1.urlid = tl2.urlid

这给出了一个错误,指出有重复的列。

我在两个表中都有一个主键。

我通过为每个表中的每一列起别名找到了一个解决方案,如下所示:

CREATE TABLE `tableName` SELECT tl1.id AS L_id1, tl1.filepath AS L_filepath1, tl1.urlid AS L_urlid1, tl1.fieldname AS L_fieldname1, tl1.fieldvalue AS L_fieldvalue1, tl2.id AS L_id2, tl2.filepath AS L_filepath2, tl2.urlid AS L_urlid2, tl2.fieldname AS L_fieldname2, tl2.fieldvalue AS L_fieldvalue2 FROM `tl1` INNER JOIN `tl2` ON tl1.urlid = tl2.urlid

然而,这很乏味。如果每个表中有 100 多列怎么办?有没有办法使这项工作无需手动为每个列名起别名?我正在寻找可以让 MySQL 创建一个列名格式为“XY”的表,其中 X 是原始表名,Y 是原始字段名,但任何其他解决方案也可以。

PS:如果不清楚,当我使用“*”时,我需要两个表中的列,而不仅仅是一个。它们是两个不同的表,具有不同的数据但具有相同的列名。(顺便说一句,我不能更改名称。)

标签: mysqljoin

解决方案


你可以做这样的事情(我不明白你为什么要创建一个看起来你已经有两倍相同数据的第三个表):

CREATE TABLE `tableName` SELECT tl1.* FROM `tl1` INNER JOIN `tl2` ON tl1.urlid = tl2.urlid

推荐阅读