sum(f)=0 を挿入しないようにするにはどうすればよいですか?
INSERT INTO `t_1` (a,b,c)
SELECT d,e,sum(f)
GROUP by d,e
sum(f)>0
クエリの末尾に条件 WHERE を追加しようとしました。しかし、それはエラーで終了します。
GROUP by を使用する場合、HAVING 句を使用してグループを除外できます。
SELECT d,e,sum(f)
GROUP by d,e
HAVING sum(f) > 0
これを試して:
INSERT INTO `t_1` (a,b,c)
SELECT d,e,sum(f)
--FROM -- don't forget this line
GROUP by d,e
HAVING sum(f) > 0
句と句の違いはWHERE
、句は集計された ( SUM()、COUNT()、MAX() などの関数) 条件を評価するのに対し、句には集計関数を含めることができないことです。HAVING
HAVING
WHERE
の前に、MySQL のドキュメントで選択構文GROUP BY
を確認できます。前に 'insert into' がある場合は、類似または同じである必要があります。
(ただし、'WHERE' ではなく 'HAVING ...' を意味していたかもしれません)。
SELECT d,e,sum(f)
FROM mytable
GROUP by d,e
HAVING sum(f) > 0
また...
その値が 0 の場合に例外をスローするロジックをトリガーに配置します。