Mysql 关于左连接的条件
我正在尝试下面的查询,其中表B为空,记录在表A中Mysql 关于左连接的条件,mysql,join,Mysql,Join,我正在尝试下面的查询,其中表B为空,记录在表A中 --This query fetched no records SELECT TABLEA.COLA,TABLEA.COLB FROM TABLEA LEFT JOIN TABLEB ON TABLEA.ID=TABLEB.ID WHERE TABLEB.COL1<>'XYZ' --This query fetched records . SELECT COL1 FROM ( SELECT TABLEA.COLA,TABLEA
--This query fetched no records
SELECT TABLEA.COLA,TABLEA.COLB FROM TABLEA
LEFT JOIN TABLEB
ON TABLEA.ID=TABLEB.ID
WHERE TABLEB.COL1<>'XYZ'
--This query fetched records .
SELECT COL1 FROM
(
SELECT TABLEA.COLA,TABLEA.COLB FROM TABLEA
LEFT JOIN TABLEB
ON TABLEA.ID=TABLEB.ID
)A WHERE COL1 <>'XYZ'
你能帮我解释一下为什么第一个查询没有返回任何记录,尽管它们看起来一样。我对第一个查询的理解是我做了一个左连接,所以如果表B中不存在记录,应该用空值替换它。作为NULL'xyz',所有记录都应正确提取 在外部联接的外部联接表上放置WHERE条件可以有效地将该联接呈现为内部联接。因此,如果外部表中没有满足条件的行,则不会返回任何行 然后,解决方案是在联接本身中包含任何此类条件。在上面的示例中,这与更改到和的位置一样简单 必须放在WHERE子句中的一个条件是对NULL的测试,即所谓的排除联接,即当您实际想要返回逆集合时