テーブル B を生成するために使用するテーブル A があるとしますON DUPLICATE KEY
。
テーブル B には、A、B、C の 3 つの列があります。
INSERT
行がまだ存在しない場合にのみ、これを行います。A と B の組み合わせで行が存在するかどうかを判断できます。そのためにWHERE NOT EXISTS
ステートメントを使用します。
INSERT INTO TableB
(A, B, C)
SELECT
SUM(A),
SUM(B),
SUM(C)
FROM TableA
WHERE NOT EXISTS (SELECT * FROM TABLE B WHERE A=A AND B=B)
GROUP BY A, B
テーブル B が空の場合、行が挿入されます。ただし、テーブル B にレコードがあるとすぐに、テーブル B にまだ存在していなくても、行は挿入されません。