根據第一個 id 更新第二行的 id
P粉818088880
P粉818088880 2024-01-28 23:38:16
0
1
439

我的原始資料如下:

sid id  amount
1   12  30
2   45  30
3   45  50
4   78  80
5   78  70

所需的輸出如下:

sid id  amount
1   12  30
2   45  30
3   45  30
4   78  80
5   78  80

目的是取得 id 第一次出現的金額並在第二次出現時更新該金額 我正在嘗試以下程式碼:

UPDATE foo AS f1
  JOIN
  ( SELECT cur.sl, cur.id,
           cur.amount AS balance 
    FROM foo AS cur
      JOIN foo AS prev
        ON prev.id = cur.id
    GROUP BY cur.tstamp
  ) AS p
  ON p.id = a.id
SET a.amount = p.amount ;

P粉818088880
P粉818088880

全部回覆(1)
P粉904450959

將表連接到一個查詢,該查詢傳回每個id 的最小值sid 並再次傳回其自身,以便獲得具有該最小值sid 的行:

UPDATE tablename t1
INNER JOIN (
  SELECT MIN(sid) sid, id
  FROM tablename
  GROUP BY id
) t2 ON t2.id = t1.id AND t2.sid 

查看演示

對於 MySql 8.0 ,如果使用 ROW_NUMBER() 視窗函數,則只需 1 個連接即可完成:

UPDATE tablename t1
INNER JOIN (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY sid) rn
  FROM tablename
) t2 ON t2.id = t1.id  
SET t1.amount = t2.amount
WHERE t2.rn = 1;

查看演示

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板