DELETE FROM `takes` WHERE ID, course_ID IN
(SELECT ID, course_ID FROM `takes` natural join `student`
where name = 'Jane' and course_ID='BIOL101')
从takes
表中,我试图放弃所有注册BIOL101的Janes。
SELECT为我提供了正确的ID和course_ID集合,我只是想从takes
表中删除它。无法弄清楚正确的语法。
phpMyAdmin给了我错误:"#1093 - 您无法指定目标表'需要'用于FROM子句"
的更新答案 0 :(得分:1)
考虑不是[ab]使用IN
,而是使用MySQL支持的正确DELETE..JOIN
。
DELETE takes
FROM takes
JOIN student s
-- The relation/schema is unclear; adapt as required
-- but MAKE SURE A RELATION IS ESTABLISHED!
ON s.student_id = takes.student_id
WHERE s.name = 'Jane'
AND takes.course_ID = 'BIOL101'
另见this answer。
答案 1 :(得分:0)
试试这个
DELETE FROM `takes` WHERE (ID, course_ID) IN
(select * FROM(
(SELECT ID, course_ID FROM `takes` natural join `student`
where name = 'Jane' and course_ID='BIOL101')t )
答案 2 :(得分:0)
DELETE
FROM `takes`
WHERE `ID` IN
(
SELECT ID FROM `takes`
NATURAL JOIN `student`
WHERE `name` = 'Jane` AND `course_ID` = 'BOIL101'
)