LEFT JOIN导致右表中一列的错误空记录

时间:2016-02-02 19:10:05

标签: mysql join

我尝试进行查询以连接TABLE_A.CONTENT_PKEY和TABLE_B.REL_PKEY上的两个表。我想要的是基于TABLE_A.CONTENT_PKEY获得唯一的结果,并显示TABLE_B.FB_LINE TABLE_A.CONTENT_PKEY和TABLE_B.REL_PKEY匹配。

但是在我的结果中,列TABLE_B.FB_LINE具有所有空值。在TABLE_B中,没有单个条目,其中TABLE_B.FB_LINE为空(由select语句确认),所以我很困惑它是如何获得该结果的。

SELECT TABLE_A.PROD_SKU_NUM, TABLE_A.LONG_DESC, TABLE_A.LOCALE_ID, TABLE_B.FB_LINE, TABLE_A.CONTENT_PKEY
FROM TABLE_A
LEFT JOIN TABLE_B ON TABLE_A.CONTENT_PKEY=TABLE_B.REL_PKEY
WHERE (TABLE_A.LOCALE_ID='en_ca' OR TABLE_A.LOCALE_ID='fr_ca')
ORDER BY TABLE_A.PROD_SKU_NUM DESC

1 个答案:

答案 0 :(得分:1)

在左(外)连接中,如果在右表中找不到左表的值,则会添加空值

例如

A.X  A.Y    B.X  B.Z
3    2      3    5
9    10

A LEFT JOIN B ON A.X = B.X会给出

A.X  A.Y  B.Z
3    2    5
9    10   null

我想你想做一个内部联接。您只需删除单词" LEFT"。

预期结果将是

A.X  A.Y  B.Z
3    2    5