如何将列中的条目克隆到具有相同ID的所有人?

时间:2013-07-23 15:41:13

标签: mysql sql

我正在寻找克隆数据库中的条目,而id是相同的。

每一行都有自己的ID,然后是我要复制的条目的单独列。我正在尝试在此列中找到包含数据的任何条目,并将其克隆到具有相同ID的任何其他行。

示例:

ID      COLUMNNAME
1       Test 1
1      
2       
2       Test 2
3
3

在这种情况下,测试1将克隆到下面的行,测试2将克隆到上面的行,而ID 3将保持空白。

我有:

SELECT `columnname`, `id`
FROM `table`
WHERE `columnname` <> ''
    AND `id` = `id`

编写以查找包含数据的条目,但不确定从哪里开始,因为我还是MySQL的新手。

2 个答案:

答案 0 :(得分:3)

您可以使用多表UPDATE语法进行自联接:

UPDATE my_table t1 JOIN my_table t2 ON t2.ID = t1.ID AND t2.columnname <> ''
SET    t1.columnname = t2.columnname

sqlfiddle上查看。

答案 1 :(得分:1)

或子查询

Update t1
       Set t1.ColumnName = (Select Min(t2.ColumnName) From my_table t2 Where t2.ID = t1.ID And t2.ColumnName <> '')
FROM dbo.my_table t1
       Where t1.ColumnName = '' Or t1.ColumnName IS NULL

小提琴:http://sqlfiddle.com/#!3/5fb81/5

但是,自联接解决方案更清洁,更快捷。