我相信我的问题可以提到another question几乎相同的标题,但遗憾的是答案对我来说不够清楚,这个问题也是6岁,也许已经对MySQL做了一些改动。
我想从表中删除行甚至没有更新/插入/删除视图表中的行,据我所知,mysql不幸地阻止我们对引用视图表的表进行更改。 我需要引用我的选项2和我的问题:
我如何“将列表转储到临时表并将其用于子查询。”或是否有解决方法使此代码正常工作?
我正在使用MySQL版本5.6.12和 我正在处理的代码:
DELETE FROM student
WHERE (SUBSTR(student.stud_no,1,4) = 1234)
AND NOT EXISTS
(SELECT vr.stud_no FROM viewroom vr WHERE
vr.stud_no = student.stud_no)
AND NOT EXISTS
(SELECT vlnr.stud_no,vlnr.status FROM viewlateststudentnr
vlnr WHERE (student.stud_no = vlnr.stud_no) AND (vlnr.status = 'confirmed') )
错误:
1443 - 表'vr'的定义阻止了表'student'上的操作DELETE。
答案 0 :(得分:2)
显然,您的观看次数必须包含您要删除的表格。这表明外连接:
DELETE s
FROM student s LEFT JOIN
viewroom vr
ON vr.stud_no = s.stud_no LEFT JOIN
viewlateststudentnr vlnr
ON s.stud_no = vlnr.stud_no AND vlnr.status = 'confirmed'
WHERE SUBSTR(s.stud_no, 1, 4) = 1234 AND
vr.stud_no IS NULL AND vlnr.stud_no IS NULL;