我正在尝试以下查询,其中表B为空且TABLEA中的记录--This query fetched no recordsSELECT TABLEA.COLA,TABLEA.COLB FROM TABLEALEFT JOIN TABLEBON TABLEA.ID=TABLEB.IDWHERE TABLEB.COL1<>'XYZ'--This query fetched records .SELECT COL1 FROM(SELECT TABLEA.COLA,TABLEA.COLB FROM TABLEALEFT JOIN TABLEBON TABLEA.ID=TABLEB.ID)A WHERE COL1 <>'XYZ'您能帮我为什么第一个查询没有返回任何看起来相同的记录。我对第一个查询的理解是“我进行了左连接,因此如果tableb中不存在记录,则应将其替换为NULL值。由于NULL 'xyz',所有记录都应正确提取。 最佳答案 在OUTER JOIN的OUTER联接表上放置WHERE条件可以有效地将联接变为INNER JOIN。因此,如果外部表中没有满足条件的行,则不会返回任何行。解决方案然后是将任何此类条件包括在联接本身内。在上面的示例中,这就像将WHERE更改为AND一样简单。必须在WHERE子句中放置的一个条件是对NULL的测试,即所谓的排除连接-即当您实际要返回逆集时。关于mysql - 左联接的条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26418552/ 10-16 08:24