我正在使用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等。
谢谢!
答案 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)
UPDATE MyTable m1, MyTable m2
SET m1.deviceModel= m2.deviceModel
WHERE m1.deviceid=m2.deviceid and m2.deviceModel is not null