特定のIDに対してnullでない整数フィールドを返すこの種の単純なクエリがあります。
SELECT field1 FROM table WHERE id = 123 LIMIT 1;
ID が見つからない場合、結果セットは空になります。結果がなくても、常に値を返すクエリが必要です。
私はこれを機能させていますが、同じサブクエリを2回実行するため、好きではありません:
SELECT IF(EXISTS(SELECT 1 FROM table WHERE id = 123) = 1, (SELECT field1 FROM table WHERE id = 123 LIMIT 1), 0);
行が存在する場合は field1 を返し、そうでない場合は 0 を返します。それを改善する方法はありますか?
ありがとう!
いくつかのコメントと回答に従って編集します:はい、単一のクエリステートメントにする必要があり、値を1つだけ返す必要があるため、カウントトリックを使用できません(参考までに、Java/Springメソッド SimpleJdbcTemplate.queryForLong() でクエリを実行します)。