我正在使用 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,等等。
谢谢!
最佳答案
首先,这是一个非规范化设计。您应该将 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
关于SQL...如何使用同一表中其他行的数据更新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4963081/