INSERT INTO Tab_Checksum ([name], checkdate, ...)
SELECT [name], checkdate, SUM(startclass), ...
FROM Tab_Check
WHERE Tab_Checksum.checkdate != Tab_Check.checkdate -- 錯誤:目標表不可引用
GROUP BY [name], checkdate;
INSERT INTO ... SELECT 語法中,SELECT 子句只能引用源表(此處為 Tab_Check)的列。目標表 Tab_Checksum 尚未插入數據,無法在 WHERE 中引用其列。
NOT EXISTS 或 LEFT JOIN ... WHERE t2.id IS NULL 判斷源表數據是否已存在目標表。
INSERT INTO Tab_Checksum (...)
SELECT t1.[name], t1.checkdate, ...
FROM Tab_Check t1
WHERE NOT EXISTS (
SELECT 1 FROM Tab_Checksum t2
WHERE t2.[name] = t1.[name] AND t2.checkdate = t1.checkdate
)
GROUP BY t1.[name], t1.checkdate;
INSERT ... SELECT 的 WHERE/ON 子句僅能引用源表別名,不可引用目標表。