在我的数据库中,我有三个不同的表。我的表看起来相似,但具有不同的表名称,并且结构如下:
Table_One
+------+----+
|id|JAN||FEB|
+------+----+
|1 | 1|| 5|
+------+----+
|2 | 8|| 12|
+------+----+
|3 | 15|| 19|
+------+----+
|4 | 22|| 26|
+------+----+
Table_Two
+------+----+
|id|JAN||FEB|
+------+----+
|1 | 1|| 5|
+------+----+
|2 | 8|| 12|
+------+----+
|3 | 15|| 19|
+------+----+
|4 | 22|| 26|
+------+----+
Table_Three
+------+----+
|id|JAN||FEB|
+------+----+
|1 | 1|| 5|
+------+----+
|2 | 8|| 12|
+------+----+
|3 | 15|| 19|
+------+----+
|4 | 22|| 26|
+------+----+
现在我想通过将所有三个表合并在一起来创建新表,其结构应类似于以下结构。
Table_Final
+------+----+
|id |JAN|FEB|
+------+----+
|1 | 1| 5|
+------+----+
|2 | 8| 12|
+------+----+
|3 | 15| 19|
+------+----+
|4 | 22| 26|
+------+----+
|5 | 1| 5|
+------+----+
|6 | 8| 12|
+------+----+
|7 | 15| 19|
+------+----+
|8 | 22| 26|
+------+----+
|9 | 1| 5|
+------+----+
|10 | 8| 12|
+------+----+
|11 | 15| 19|
+------+----+
|12 | 22| 26|
+------+----+
我尝试了几次通过 UNION 操作将表合并在一起。但问题是,使用 UNION 操作创建新表后,新表不会创建 auto_increment id,因此,我没有获得任何更新、删除新表数据中选项的权限。
最佳答案
使用 MySQL 的用户变量,这也是可能的,无需使用额外的表
但是这个查询将始终确保相同的 id,因为没有 ORDER BY..
SELECT
(@id := @id + 1) AS id
, JAN
, FEB
FROM (
SELECT
JAN
, FEB
FROM (
SELECT
id
, JAN
, FEB
, 1 AS position
FROM
Table_One
UNION ALL
SELECT
id
, JAN
, FEB
, 2 AS position
FROM
Table_Two
UNION ALL
SELECT
id
, JAN
, FEB
, 3 AS position
FROM
Table_Three
) AS Tables
CROSS JOIN ( SELECT @id := 0 ) AS init_user_param
ORDER BY
position ASC
, id ASC
) AS Tables_user_param
关于mysql - 如何将两个以上的表合并成一个id自增的新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50007167/