1

フィールドが null の場合、戻り値 0 を試しています。たとえば、インポートが null の id_articulo が 1 つある場合、クエリは 0 を返します。

テーブル

CREATE TABLE `PUJAS` (
  `ID_PUJA` int(11) NOT NULL AUTO_INCREMENT,
  `ID_ARTICULO` int(11) DEFAULT NULL,
  `ID_USUARIO` int(11) DEFAULT NULL,
  `TIEMPO` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `IMPORTE` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID_PUJA`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAU

LT CHARSET=latin1;

クエリ

SELECT IFNULL(MAX(IMPORTE),0) FROM PUJAS GROUP BY ID_ARTICULO

ここに画像の説明を入力

4

3 に答える 3

1

COALESCE () を使用できます。

SELECT COALESCE (MAX (Importe), 0)
FROM
  ...

その引数から最初の非 null 値を返します。MAX が null の場合、0 が返されます。

編集

多分あなたはこれを探しています:

SELECT
  CASE WHEN SUM(IMPORTE IS NULL)=0 THEN MAX(IMPORTE) ELSE 0 END
FROM
  PUJAS
GROUP BY
  ID_ARTICULO

これは、null 値を持つMAX(Importe)それぞれの Importe がない場合に返されます。ID_ARTICULOそれ以外の場合は 0 を返します。fiddle hereを参照してください。

于 2013-05-13T23:09:32.630 に答える
0

別の ifnull を追加します。

SELECT IFNULL(MAX(IFNULL(IMPORTE, 0)), 0) FROM PUJAS GROUP BY ID_ARTICULO
于 2013-05-13T23:06:18.713 に答える