1

次のテーブルを取得しました。すべての行が disponibilidad = 1 の場合は 1 を返す必要があります

例の表

次の QUERY は問題なく動作しますが、より効率的な方法を探していました。

クエリ:

SELECT IF(AVG(disponibilidad) < 1, 0, 1) AS newResult
FROM pasteleria.compone
RIGHT JOIN pasteleria.ingredientes
    ON pasteleria.compone.id_ingrediente = pasteleria.ingredientes.id_ingrediente
WHERE id_componente = 1;

結果:

結果

私が見たように、「AND」を使用すると、AVG() を実行する必要がないため、はるかに効率的になります。

4

2 に答える 2

0

のようなものはどうですか

SELECT IF(COUNT(*)>0,0,1) AS newResult
FROM pasteleria.compone
RIGHT JOIN pasteleria.ingredientes
    ON pasteleria.compone.id_ingrediente = pasteleria.ingredientes.id_ingrediente
WHERE id_componente = 1
AND disponibilidad <> 1

disponibilidad が 1 でない行がある場合は0 を出力し、それ以外の場合は 0 (すべての disponibilidad 値が 1) の場合は 1 を出力しますか?

于 2021-12-21T19:08:21.657 に答える