Mysql 像students这样的视图表的定义可以防止person表上的操作更新 学生作为与person表相关的视图
尝试使用内部联接Mysql 像students这样的视图表的定义可以防止person表上的操作更新 学生作为与person表相关的视图,mysql,sql,Mysql,Sql,尝试使用内部联接 UPDATE persons INNER JOIN (SELECT students.PERSONS_STCODE AS STCODE FROM students WHERE @Counter > 0 AND students.ID NOT IN (SELECT sel_lesson.ST_ID FROM sel_lesson W
UPDATE persons
INNER JOIN (SELECT students.PERSONS_STCODE AS STCODE
FROM students
WHERE @Counter > 0
AND students.ID NOT IN
(SELECT sel_lesson.ST_ID
FROM sel_lesson
WHERE sel_lesson.YEAR = @CurrenYear
AND sel_lesson.TERM = @CurrentTerm
GROUP BY sel_lesson.ST_ID)
AND students.STATUS IN('1','14') ) T on t.STCODE = persons.STCODE
SET persons.EN_FAMILY = 'Test'
是Oracle还是MySQL?问题是什么?你有错误吗?哪一个?另外,假设我想帮助您,我需要重现错误,但我不知道涉及的表和视图的结构,因此我甚至无法尝试运行此语句。请通过构建一个Is MySQL来编辑您的问题,子查询work success并返回3行,但在update not workSo中,同样,我如何重现错误并尝试帮助您?“不工作”是什么意思?它会给出一个错误吗?或者它做了一些意想不到的事情?在这个查询中实际上有一个视图吗?如果有,它叫什么?@ali视图在sql中有一个非常特殊的含义。如果您将所有表规范(以及视图,如果有的话)和示例数据一起作为文本发布到问题,您将有更好的机会得到答案。感谢您的耐心,但此查询与我的查询一样存在错误query@ali向我显示您的确切错误消息..answay。。在T打开之前添加了一个(mssing)
UPDATE persons
INNER JOIN (SELECT students.PERSONS_STCODE AS STCODE
FROM students
WHERE @Counter > 0
AND students.ID NOT IN
(SELECT sel_lesson.ST_ID
FROM sel_lesson
WHERE sel_lesson.YEAR = @CurrenYear
AND sel_lesson.TERM = @CurrentTerm
GROUP BY sel_lesson.ST_ID)
AND students.STATUS IN('1','14') ) T on t.STCODE = persons.STCODE
SET persons.EN_FAMILY = 'Test'