当字段与MySQL中的另一个表不匹配时从表中删除
我试图在使用下面的SELECT语句来创建一个DELETE语句后,我得到它的工作。当字段与MySQL中的另一个表不匹配时从表中删除
基本上表“列表”有一堆需要删除的记录。如果在地址表中找不到EmpNo,那么我想从列表中删除记录。我一直得到一个无效的语法。我究竟做错了什么?
SELECT A.*
FROM address A
LEFT JOIN listing B
USING (EmpNo)
WHERE B.EmpNo IS <> A.EmpNo
这里取下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
嗯..我正在尝试这个,它正在删除列表中的所有记录,甚至是那些与地址匹配的记录? DELETE A. * FROM address A LEFT JOIN qemplisting B ON B.EmpNo = A.EmpNo – 2013-02-26 22:08:32
@RoccoTheTaco抱歉,我错过了此评论。要只删除那些不匹配的,你需要'WHERE B.EmpNo IS NULL' - 这意味着A中有一条记录与B中没有匹配的记录。 – 2013-02-28 11:56:07
将来请发布错误信息。这次发现很容易,但并非总是如此。而且MySQL 1064错误通常指向发生错误的地方。 – 2013-02-26 20:15:16
好的,会做的。这只是给了一个真正的通用错误,所以我认为我真的搞砸了查询。 – 2013-02-26 20:27:10