ホームページ >データベース >mysql チュートリアル >SQL クエリが行を返さないときにデフォルト値を返す方法は?

SQL クエリが行を返さないときにデフォルト値を返す方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-29 08:52:30936ブラウズ

How to Return a Default Value When a SQL Query Returns No Rows?

クエリが行を返さなかった場合にデフォルト値を返す

SQL クエリを使用してデータを取得し、一致する行が見つからない場合、空の結果の代わりにデフォルト値を返すと便利です。これは、表示するデータがない場合でも、常に何かが表示されるようにしたい場合に特に便利です。

次の SQL ステートメントを考えてみましょう:

<code class="sql">SELECT `file`
FROM `show`, `schedule` 
WHERE `channel` = 1
  AND `start_time` <= UNIX_TIMESTAMP() 
  AND `start_time` > UNIX_TIMESTAMP()-1800
  AND `show`.`id` = `schedule`.`file` 
ORDER BY `start_time`
DESC LIMIT 1</code>

このクエリは取得を試みます。特定のチャネルの次にスケジュールされたアイテムですが、一致する行が見つからない場合は、空の結果が返されます。代わりにデフォルト値を返すには、COALESCE または IFNULL 関数を使用できます。

<code class="sql">SELECT COALESCE(`file`, 'default.webm') `file` 
...

SELECT IFNULL(`file`, 'default.webm') `file` 
...</code>

ただし、行が見つからない場合、これらのソリューションは空の結果を返す可能性があります。常にデフォルト値が返されるようにするには、レコードが選択されていないときに MIN() などの集計関数を使用して NULL 値を提供します。次のステートメントではこの手法が使用されています。

<code class="sql">SELECT IFNULL(MIN(`file`), 'default.webm') `file` 
...</code>

MIN() 関数を使用すると、行が選択されていない場合に NULL が返されることを保証できます。次に、IFNULL() 関数は NULL 値をデフォルト値に置き換えて、常に何かが表示されるようにします。

以上がSQL クエリが行を返さないときにデフォルト値を返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。