存在しない SQL 行のデフォルト値を返す方法
結合された 2 つのテーブル show と show から情報を取得するアクティブなクエリがあるとします。特定の基準に基づいてスケジュールを設定します。クエリに一致する行がない場合、空の結果ではなくデフォルト値が返されるようにするにはどうすればよいですか?
解決策の 1 つは、クエリで IFNULL() または COALESCE() 関数を利用することです。これらの関数は 2 つの引数を取ります。
IFNULL(expression, default_value) COALESCE(expression, default_value)
expression は、無効かどうかをチェックする値を指し、default_value は、expression が null の場合に返す値です。
例:
<code class="sql">SELECT IFNULL(`file`, 'default.webm') AS `file` FROM `show`, `schedule`...</code>
一致する行がない場合、このクエリは 'default.webm' を返します。
ただし、単一行のみを取得する特定のケースではでは、集計関数を利用して、一致する行がない場合に 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() は null 値をデフォルト値に置き換え、クエリが常に空ではない結果を返すようにします。
以上が結合を使用するときに、存在しない SQL 行のデフォルト値を返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。