ホームページ  >  記事  >  データベース  >  結合を使用するときに、存在しない SQL 行のデフォルト値を返す方法は?

結合を使用するときに、存在しない SQL 行のデフォルト値を返す方法は?

DDD
DDDオリジナル
2024-11-01 12:23:30584ブラウズ

How to Return a Default Value for Absent SQL Rows When Using Joins?

存在しない 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 サイトの他の関連記事を参照してください。

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