2

sum(f)=0 を挿入しないようにするにはどうすればよいですか?

INSERT INTO `t_1` (a,b,c)
 SELECT d,e,sum(f)
 GROUP by d,e

sum(f)>0クエリの末尾に条件 WHERE を追加しようとしました。しかし、それはエラーで終了します。

4

4 に答える 4

4

GROUP by を使用する場合、HAVING 句を使用してグループを除外できます。

SELECT d,e,sum(f)  
GROUP by d,e
HAVING sum(f) > 0
于 2012-06-20T00:17:42.893 に答える
4

これを試して:

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() などの関数) 条件を評価するのに対し、句には集計関数を含めることができないことです。HAVINGHAVINGWHERE

于 2012-06-20T00:22:21.050 に答える
1

の前に、MySQL のドキュメントで選択構文GROUP BYを確認できます。前に 'insert into' がある場合は、類似または同じである必要があります。

(ただし、'WHERE' ではなく 'HAVING ...' を意味していたかもしれません)。

于 2012-06-20T00:18:31.073 に答える
1
SELECT d,e,sum(f)  
FROM mytable
GROUP by d,e
HAVING sum(f) > 0

また...

その値が 0 の場合に例外をスローするロジックをトリガーに配置します。

于 2012-06-20T00:18:49.700 に答える