我正在尝试对具有相同架构的 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 创建一个列名格式为“X.Y”的表,其中 X 是原始表名,Y 是原始字段名,但任何其他解决方案也可以。
P.S.:如果不清楚的话,当我使用“*”时,我需要两个表中的列,而不仅仅是一个表。它们是两个不同的表,具有不同的数据但具有相同的列名。 (顺便说一句,我无法更改名称。)
最佳答案
您可以执行类似的操作(我不明白为什么您要创建第三个表,其中似乎您已经拥有两倍相同的数据):
CREATE TABLE `tableName` SELECT tl1.* FROM `tl1` INNER JOIN `tl2` ON tl1.urlid = tl2.urlid
关于mysql - 如何根据具有相同列/字段名称的表的联接结果轻松创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56391867/