簡體   English   中英

SQL ...如何使用同一個表中其他行的數據更新行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM