[英]SQL… How to update rows with data from other rows in the same table?
我正在使用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
自我加入 -
UPDATE MyTable m1, MyTable m2
SET m1.deviceModel= m2.deviceModel
WHERE m1.deviceid=m2.deviceid and m2.deviceModel is not null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.