我正在尝试根据其中一个键中的内容删除表中的行(之前的程序员没有确保如果某个键缺失则不会删除值,yada yada)这就是声明我试过了:
DELETE FROM studentinstruments
WHERE studentID IN
(SELECT DISTINCT studentID
FROM studentinstruments
WHERE studentID NOT IN
(SELECT ID FROM students));
我收到错误“ERROR 1093(HY000):您无法在FROM子句中指定目标表'studentinstruments'进行更新”,我不知道它有什么问题。将此声明用于修正会有什么作用?
答案 0 :(得分:1)
为什么不直接使用它而不是使用多个子查询,它会做同样的事情。
DELETE FROM studentinstruments
WHERE studentID NOT IN
(SELECT ID FROM students);
答案 1 :(得分:0)
问题在于Mysql,您无法在选择部分中使用的同一个表中进行修改。
而是尝试使用该实例。
DELETE FROM studentinstruments
WHERE studentID IN
(
SELECT studentId
FROM (SELECT * FROM studentinstruments) AS something
WHERE something.studentID NOT IN (SELECT * FROM studentinstruments)
)