ホームページ >データベース >mysql チュートリアル >一致する行が見つからない場合に SQL でデフォルト値を返す方法は?
単一行が見つからない場合に 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>
このクエリは、指定された条件を満たす最新のスケジュールされたアイテムを返します。ただし、一致する行が見つからない場合 (つまり、過去 30 分以内にスケジュールされた項目がない場合)、空の結果が返されます。
デフォルト値が近づきます
このシナリオを処理し、一致する行が見つからない場合にデフォルト値を返すには、いくつかのアプローチを使用できます。
COALESCE/IFNULL with Aggregation
1 つの方法では、 COALESCE 関数または IFNULL 関数を集計関数と組み合わせて使用します。このアプローチにより、クエリ結果が空であっても、確実に null 以外の値が返されます。例:
<code class="sql">SELECT IFNULL(MIN(`file`), 'default.webm') `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>
このクエリでは、MIN() 集計関数を使用してファイル列の最小値を返します。これにより、行が選択されていない場合には NULL 値が返されます。次に、IFNULL または COALESCE 関数は、NULL 値をデフォルト値 'default.webm' に置き換えます。
このソリューションは、一致する行が見つからない場合にデフォルト値を効果的に返し、アプリケーションがスケジュールされたアイテムの不在を処理できるようにします。
以上が一致する行が見つからない場合に SQL でデフォルト値を返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。