我使用的是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

10-06 05:39