2013-07-23 60 views
1

我正在尋找克隆數據庫中的一個條目,而ID是相同的。如何將列中的條目克隆到具有相同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。

回答

3

你可以用多張的表UPDATE語法自聯接:

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

看到它的sqlfiddle

+0

啊完美,沒有意識到一個連接會在同一張表內工作 - 非常感謝你 – Dabien

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

但是,自聯接解決方案是更清潔和更快。

相關問題