mySQL从一个表中删除使用自然加入另一个表的字段?

时间:2014-05-24 07:43:19

标签: mysql phpmyadmin

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子句"

的更新

3 个答案:

答案 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'
)