次の行に沿って何かをしたいとしましょう:
SELECT CASE
WHEN (SELECT COUNT(id) FROM table WHERE column2 = 4) > 0
THEN 1 ELSE 0 END
基本的に、テーブルに 1 つ以上の行がある場合は 1 を返し、それ以外の場合は 0 を返します。これを行うには、文法的に正しい方法が必要です。それは何でしょうか?ありがとう!
次の行に沿って何かをしたいとしましょう:
SELECT CASE
WHEN (SELECT COUNT(id) FROM table WHERE column2 = 4) > 0
THEN 1 ELSE 0 END
基本的に、テーブルに 1 つ以上の行がある場合は 1 を返し、それ以外の場合は 0 を返します。これを行うには、文法的に正しい方法が必要です。それは何でしょうか?ありがとう!
質問:テーブルに 1 つ以上の行がある場合は 1 を返し、それ以外の場合は 0 を返します:
この場合、 は必要ありませんCOUNT
。代わりに を使用しますEXISTS
。これは、すべてのレコードをカウントするのではなく、レコードが見つかるとすぐに返されるため、パフォーマンスが大幅に向上します。
SELECT CASE
WHEN EXISTS (SELECT 1 FROM table WHERE column2 = 4)
THEN 1
ELSE 0
END
Mahmoud Gammal が興味深いアプローチで回答を投稿しました。残念ながら、単に ではなくレコードの数を返したため、回答は削除されました1
。これはsign
functionを使用して修正でき、このよりコンパクトなソリューションにつながります。
SELECT sign(count(*)) FROM table WHERE column2 = 4
興味深いアプローチだと思ったので投稿しました。本番環境では、通常、RedFilter の答えに近いものになります。
あなたはこれを行うことができます:
SELECT CASE WHEN COUNT(ID) >=1 THEN 1 WHEN COUNT (ID) <1 THEN 0 END FROM table WHERE Column2=4