テーブル結合中に、MySQLはいつこの機能を使用しますか?MySQLは、テーブル間の結合時に自動的にcoalesce関数を使用しますか?
2つの共通の列を置き換える単一の結果列は、結合操作を使用して と定義されています。
COALESCE(x, y) = (CASE WHEN x IS NOT NULL THEN x ELSE y END)
https://dev.mysql.com/doc/refman/8.0/en/join.html
:すなわち、2つのT1.Aおよびaは= COALESCE(T1.A、T2.A)として定義されている単一の結合列、 得T2.A、あります私は関数が何をしているのか知っていますが、join
操作中にその関数がいつ使用されるかを知りたいと思います。これはちょうど私には意味がありません!誰か私に例を示すことができますか?
しかし、関数COALESCE(x、y)は、NULL引数がある場合にのみ有効です。したがって、あなたの例では、最初のテーブルのカラムbがNULL値を持つとどうなりますか? COALESCE(NULL、y)?内部結合は、この行を結果セットから除外します。しかし、左のジョインはNULLを返し、「y」の値は返しません。 – folder
これは、NATURAL JOINとJOIN USINGのコンテキストと、冗長なカラム( 'COALESCE')をどのように削除するのかを書き留めた理由です。 MySQLのドキュメントには、「結合操作が他の結合であれば、結合の結果列は結合された表のすべての列の連結から成り立っています」と説明されています。「内部結合の場合、COALESCE(a。 c1、b.c1)は、両方の列が同じ値を持つため、a.c1またはb.c1と同じです。外部結合(LEFT JOINなど)の場合、2つの列のうちの1つはNULL' – fyrye
になる可能性があります。私の例では、 'b'のレコードの1つがNULLの場合、結果は取得されません。これは、結合の基準が満たされていないためです。 – fyrye