Mysql
使用 GROUP BY 在 INSERT INTO SELECT 中進行重複鍵更新
我有疑問
INSERT IGNORE INTO t2 (ID,P1,P2,Items) SELECT ID,P1,P2,SUM(Items) FROM t1 GROUP BY ID,P1,P2;
由於我需要經常執行此查詢以檢查 中的更改
t1
,因此我需要添加ON DUPLICATE KEY UPDATE t2.Items=SUM(t1.Items)
但它給出了
ERROR 1111 (HY000): Invalid use of group function
錯誤。
像所有功能一樣,您需要對數據進行進一步選擇
並且請下次提供一個最小的可重現範例,以便可以更快、更省力地完成答案
CREATE TABLe t2 (ID INT primary key,P1 INT,P2 INT ,Items INT )
INSERT INTO t2 VALUES (1,1,1,1)
CREATE TABLe t1 (ID INT primary key,P1 INT,P2 INT ,Items INT )
INSERT INTO t1 VALUES (1,1,2,2)
INSERT IGNORE INTO t2 (ID,P1,P2,Items) SELECT ID,P1,P2, t1sum FROM (SELECT ID,P1,P2,SUM(Items) t1sum FROM t1 GROUP BY ID,P1,P2) t3 ON DUPLICATE KEY UPDATE t2.Items=t3.t1sum
✓
SELECT * FROM t2
身份證 | P1 | P2 | 項目 -: | -: | -: | ----: 1 | 1 | 1 | 2
db<>在這裡擺弄