当字段与MySQL中的另一个表不匹配时从表中删除

时间:2013-02-26 20:11:08

标签: mysql

我正在尝试使用以下SELECT语句在我使用它之后制作DELETE语句。

基本上表“列表”有一堆需要删除的记录。如果在地址表中找不到EmpNo,那么我想从列表中删除该记录。我一直得到一个无效的语法。我做错了什么?

SELECT A.*
FROM address A
LEFT JOIN listing B
USING (EmpNo)
WHERE B.EmpNo IS <> A.EmpNo

1 个答案:

答案 0 :(得分:2)

在此处删除IS关键字:

WHERE B.EmpNo IS <> A.EmpNo

应该是:

WHERE B.EmpNo  <> A.EmpNo

如果EmpNo在两个表中都存在同名,USING将在那里正常工作。否则,您可以使用ON更加明确:

FROM 
  address A
  LEFT JOIN listing B
    ON A.EmpNo = B.EmpNo

要在A中找不到与B无匹配的记录,请测试B.EmpNo IS NULL而不是B.EmpNo <> A.EmpNo

WHERE B.EmpNo IS NULL