Mysql

使用 GROUP BY 在 INSERT INTO SELECT 中進行重複鍵更新

  • May 10, 2021

我有疑問

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<>在這裡擺弄

引用自:https://dba.stackexchange.com/questions/291265