0
我創建了一個SQL Fiddle來說明我想在這裏做什麼。我有一個名爲「項目」的表格,其中包含個人信息和彙總信息。有一個名爲「keycode」的列表示該項目的單個數據片段。有一個名爲「促銷」的專欄,用於將事情分組在一起。如何在MySQL中使用GROUP BY和JOIN更新每個分組行?
我還有另一個名爲「keycodes」(注意S)的列,我想要包含同一個促銷的鍵碼的逗號分隔列表。因此,例如,如果有三行帶有促銷「A」,並且它們對於「keycode」列的各個值是ABC,DEF和GHI,那麼我會將這三行中的所有三行的值設爲相同的值爲「keycodes」列。即:ABC,DEF,GHI
我試着用UPDATE語句來做這件事;然而,這僅更新分組行一個:
UPDATE items i
INNER JOIN (
SELECT keycode, GROUP_CONCAT(keycode SEPARATOR ',') AS keycodes
FROM items
WHERE promo IS NOT NULL
GROUP BY promo
) AS t ON i.keycode = t.keycode
SET i.keycodes = t.keycodes;
所以在我SQL Fiddle,該行與ID爲1和4正確更新(和技術上5太多,但只是因爲它只有一個值)。但是,ID爲2,3和6的行沒有我想要的值。
這是可以在MySQL中完成的事情嗎?
所需的輸出:
+----+---------+-------------+-------+
| id | keycode | keycodes | promo |
+----+---------+-------------+-------+
| 1 | ABC | ABC,DEF,GHI | A |
| 2 | GHI | ABC,DEF,GHI | A |
| 3 | DEF | ABC,DEF,GHI | A |
| 4 | QRS | QRS,TUV | B |
| 5 | WXY | WXY | C |
| 6 | TUV | QRS,TUV | B |
+----+---------+-------------+-------+