をかどうかを確認することができ、ブールは、あなたはその後、算術演算を使用することができるだけで、整数0または1である:
SELECT ...
FROM tbl_vendor_departments
WHERE (clothing + automotive + lawn_garden + tools) >= 2
厳密に言えば、MySQLではゼロが偽であり、ゼロ以外の値がすべてtrueです。したがって、「ブール値」列に1より大きな値(たとえば42)が含まれていると、予期しない結果になる可能性があります。これを補うためには、真の値を偽に反転してから再び反転させることができます。これにより、42が0に変換され、1に戻ります。オペレータの優先順位を制御するには、かっこを使用します。
SELECT ...
FROM tbl_vendor_departments
WHERE (
(NOT NOT clothing) +
(NOT NOT automotive) +
(NOT NOT lawn_garden) +
(NOT NOT tools)
) >= 2
他のSQL実装では試してはいけません。ほとんどの場合、整数演算と互換性のある形でboolean
が実装されていないため、上記のクエリはANSI SQLによってエラーを生成します。人のために、あなたは真の1に変換するために、CASE式を使用できます。それは保証機能である場合
SELECT ...
FROM tbl_vendor_departments
WHERE (
CASE clothing WHEN true THEN 1 ELSE 0 END +
CASE automotive WHEN true THEN 1 ELSE 0 END +
CASE lawn_garden WHEN true THEN 1 ELSE 0 END +
CASE tools WHEN true THEN 1 ELSE 0 END
) >= 2
優れた回答と優れた情報もあります。私は答えとしてチェックするだろうが、Golez Trolが最初にそれを取得し、それは動作した...確かに+1。 – Ofeargall
ねえ、私は@GolezTrolが投稿したときに答えを入力していました。彼/彼女はより早いことを信じています! :) –
ああ!私は二重の 'NOT'ステートメントを考えなかったでしょう。構造化されたクエリの魔法の素敵なビットがそこにあります。 – Ofeargall