mysql - 如何根据具有相同列/字段名称的表的联接结果轻松创建表

标签 mysql join

我正在尝试对具有相同架构的 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/

相关文章:

r - 条件连接数据帧 R

MySQL删除子查询中的重复子句

mysql - 如何使用查询获取确切的行

php - 将jquery mobile和php mysql转为apk文件

php - 使用 php 和 mysql 进行多次插入

php - 如何在 Laravel 5.3 中正确删除用户表列中的 'unique' 列属性?

php - SQLSRV 从 MySQL 转换数据表时参数无效

在嵌套查询上使用内部连接更新 MySQL

php - 在 MySQL 和 PHP 上使用 Left Join 对其他表中的字段求和

mysql - 如何使用 JOIN 而不是子查询(NOT IN)