1
在表連接期間,MySQL何時使用此函數?MySQL在表之間的連接期間是否自動使用coalesce函數?
替換兩個公共列的單個結果列使用合併操作定義爲 。即,對於兩個t1.a和t2.a的 得到的單連接列一個被定義爲= COALESCE(t1.a,t2.a) 其中:
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
我知道該功能是幹什麼的,但我想知道在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),兩列中的一列可以爲NULL' – fyrye
至於在我的示例中,如果'b'的其中一條記錄是'NULL',則不會檢索到任何結果。這是因爲沒有滿足加入的標準。 – fyrye