ホームページ >データベース >mysql チュートリアル >SQL クエリが行を返さないときにデフォルト値を返す方法は?
クエリが行を返さなかった場合にデフォルト値を返す
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 サイトの他の関連記事を参照してください。