mysql:复制列并使用表中的不同条目编辑一列

时间:2016-07-21 09:50:32

标签: mysql mysqli

复制同一表格中的第1行,然后将其插入已编辑的列,如下所示。

Table 1 (ID is auto increment)
        ID | CL1 | CL2   | CL3
        1  | A   | text1 | NULL
        2  | B   | text2 | NULL

Table 2 
            ID  | CL3
            21  | 45
            24  | 63

Converted Table 1
        ID | CL1 | CL2   | CL3
        1  | A   | text1 | NULL
        2  | B   | text2 | NULL
        3  | A   | text1 | 45
        4  | B   | text2 | 63

我知道如何复制和插入一列重复的所有行,但更改一些具有不同值的列是问题。

以下是复制1列的所有字段的查询更改:

INSERT INTO table1 (col1, col2, col3)
     SELECT col1, col2, 1
     FROM table1 LIMIT 2;

非常感谢任何帮助。

ex:所以现在我们有table2,其中包含table1 CL3的值。现在我们可以从另一个表中获取数据并在复制时插入它们吗?

1 个答案:

答案 0 :(得分:0)

假设您希望1个表中的前2个记录使用来自另一个表的前2行的值进行更新,那么我认为您需要为每个表添加序列号并基于此加入。

如下所示,但它不会很快!

INSERT INTO table1 (ID, CL1, CL2, CL3)
SELECT NULL, a.CL1, a.CL2, b.CL3
FROM
(
     SELECT CL1, CL2, @cnt1:=@cnt1 + 1 AS cnt
     FROM table1 
     CROSS JOIN (SELECT @cnt1:=0) sub0
     ORDER BY ID
     LIMIT 2
) a
INNER JOIN
(
     SELECT CL3, @cnt2:=@cnt2 + 1 AS cnt
     FROM table2 
     CROSS JOIN (SELECT @cnt2:=0) sub0
     ORDER BY ID
     LIMIT 2
) b
ON a.cnt = b.cnt