我使用的是mysql服务器,我有一个表,其中有些行缺少数据。我想使用其他行的信息更新行。我的桌子看起来像:
ID,签名,设备ID,设备模型
12010-10-12,9abc9,
22010-10-12,3E44F,
32010-10-13,D3453,
42010-10-14,D3453,
52010-10-14,D3453,HW1号
62010-10-12、3E44F、HW2
72010-10-12,9ABC9,HW1号
对于前几个条目,devicemodel字段为空。我想使用在同一表的其他行中为设备id找到的设备模型更新此值。在上面的例子中,第1行应该有devicemodel=hw1,第2行应该有devicemodel=hw2,等等。
谢谢!
最佳答案
首先,这是一个非标准化的设计。您应该将“设备模型”->“设备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