SQL ...如何使用同一个表中其他行的数据更新行?

时间:2011-02-10 21:42:31

标签: sql mysql

我正在使用MySQL服务器,我有一个表,其中一些行缺少数据。我想使用其他行的信息更新行。我的表格如下:

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等。

谢谢!

2 个答案:

答案 0 :(得分:3)

首先,这是一种非规范化设计。你应该移动设备模型 - > device Id与另一个表的关系。

第二

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

答案 1 :(得分:2)

Self Join -

UPDATE MyTable m1, MyTable m2 
SET m1.deviceModel= m2.deviceModel
WHERE m1.deviceid=m2.deviceid and m2.deviceModel is not null
相关问题