Tag: mysql error 1093

SQL UPDATE引用MySQL中的同一个表的子查询

我试图用UPDATE更新表中一堆行的列值。 问题是我需要使用子查询来派生这个列的值,它依赖于同一个表。 这是查询: UPDATE user_account student SET student.student_education_facility_id = ( SELECT teacher.education_facility_id FROM user_account teacher WHERE teacher.user_account_id = student.teacher_id AND teacher.user_type = 'ROLE_TEACHER' ) WHERE student.user_type = 'ROLE_STUDENT'; 一般来说,如果老师和学生在两个不同的表中,MySQL不会抱怨。 但是因为它们都使用同一个表,所以mysql会发出这个错误: 错误1093(HY000):您无法在FROM子句中指定目标表'student'进行更新 有什么办法可以强制MySQL做更新? 我是100%正面的FROM子句不会因为行更新而受到影响。 如果没有,是否有另一种方式,我可以写这个更新SQL来实现相同的影响? 谢谢! 编辑:我想我得到它的工作: UPDATE user_account student LEFT JOIN user_account teacher ON teacher.user_account_id = student.teacher_id SET student.student_education_facility_id = teacher.education_facility_id WHERE student.user_type = 'ROLE_STUDENT';

SQL删除与JOIN另一个表的WHERE条件

我必须删除guide_category中与guide表(死关系) guide_category行。 这是我想要做的,但它当然不起作用。 DELETE FROM guide_category AS pgc WHERE pgc.id_guide_category IN (SELECT id_guide_category FROM guide_category AS gc LEFT JOIN guide AS g ON g.id_guide = gc.id_guide WHERE g.title IS NULL) 错误: 您无法在FROM子句中指定目标表“guide_category”进行更新

MySQL错误1093 – 无法在FROM子句中为更新指定目标表

我在我的数据库中有一个表story_category与损坏的条目。 下一个查询返回损坏的条目: SELECT * FROM story_category WHERE category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id); 我试图删除它们执行: DELETE FROM story_category WHERE category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id); 但是我得到了下一个错误: #1093 – 您无法在FROM子句中指定目标表'story_category'进行更新 我怎样才能克服呢?