2011-02-10 71 views
3

我正在使用MySQL服務器,我有一個表的一些行缺少數據。我想用其他行的信息更新行。我的表看起來像:
SQL ...如何使用同一個表中其他行的數據更新行?

 
id,signin,deviceId,deviceModel 
1,2010-10-12,9ABC9, 
2,2010-10-12,3E44F, 
3,2010-10-13,D3453, 
4,2010-10-14,D3453, 
5,2010-10-14,D3453,HW1 
6,2010-10-12,3E44F,HW2 
7,2010-10-12,9ABC9,HW1 

對於前幾個條目,該deviceModel字段爲空。我想使用在同一表的其他行中爲deviceId找到的deviceModel來更新此值。在上面的例子中,第1行應該有deviceModel = HW1,第2行應該有deviceModel = HW2等。

謝謝!

回答

3

首先,這是一個去歸一化的設計。您應該將deviceModel - > deviceId關係移動到另一個表。

二:

UPDATE 
    yourTable AS t1 
CROSS JOIN (
    SELECT DISTINCT 
    deviceId, deviceModel 
    FROM 
    yourTable 
    WHERE 
    deviceModel IS NOT NULL 
) AS t2 
USING (deviceId) 
SET 
    t1.deviceModel = t2.deviceModel 
WHERE 
    t1.deviceModel IS NULL 
2

Self Join -

UPDATE MyTable m1, MyTable m2 
SET m1.deviceModel= m2.deviceModel 
WHERE m1.deviceid=m2.deviceid and m2.deviceModel is not null 
+0

無效的SQL。在UPDATE中沒有FROM – Mchl 2011-02-10 21:49:50

+1

我認爲它是有效的...... – Vishal 2011-02-10 21:53:34

相關問題