以下是该陈述的内容:
DELETE FROM videoswatched vw2
WHERE vw2.userID IN ( SELECT vw.userID
FROM videoswatched vw
JOIN users u ON vw.userID=u.userID
WHERE u.companyID = 1000
GROUP BY userID )
对我来说这看起来不错,而且SELECT语句可以独立工作(生成具有单列'userID'的行。
基本上,我想删除'videoswatched'表中的条目,其中在加入users表后,videoswatched条目中的userID被发现具有companyID = 1000。
如何在不使用sql语法的错误的情况下执行此操作?它说错误接近:
vw2 WHERE vw2.userID IN (
SELECT vw.userID FROM videoswatched vw
JOIN users u
并在第1行。
答案 0 :(得分:1)
评论中已经回答:您需要删除表别名,MySQL's DELETE statement syntax中不允许这样做(并且也不需要它)。
编辑:BTW,试试这个(从内存编码,可能是错误的):
DELETE vw.*
FROM videoswatched vw
INNER JOIN users u ON vw.userID = u.userID
WHERE u.companyID = 1000;
答案 1 :(得分:0)
请注意
如果声明表的别名, 你在引用时必须使用别名 到桌子:
DELETE t1 FROM test AS t1,test2 WHERE ...
所以,你可以试试
DELETE vm2 FROM videoswatched vw2 WHERE vw2.userID IN (
SELECT vw.userID FROM videoswatched vw
JOIN users u
ON vw.userID=u.userID
WHERE u.companyID=1000
GROUP BY userID
)
但正如评论中所提到的,你可以简单地取消别名
DELETE FROM videoswatched WHERE userID IN (
SELECT vw.userID FROM videoswatched vw
JOIN users u
ON vw.userID=u.userID
WHERE u.companyID=1000
GROUP BY userID
)