mySQL 使用与另一张表自然连接的字段从一个表中删除?

标签 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 子句中指定要更新的目标表‘takes’”

最佳答案

不要考虑 [ab] 使用 IN,而是使用适当的 DELETE..JOIN MySQL 确实支持。

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 .

关于mySQL 使用与另一张表自然连接的字段从一个表中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23842527/

相关文章:

php - 用 cakephp 保存相对值

java - JPA中的事务实现

mysql - 如何为第一列有重复的行选择第二列?

mysql - 如何一次搜索多个数据库?

php - 在 phpMyAdmin 中,在 _users 结构中创建新列会导致错误 #1067

MySQL删除多条记录

Mysql 选择 order by date desc 然后按列分组

mysql - 如何通过触发器提取插入行中的uuid作为主键

mysql - 使用 MAMP 检索 phpmyadmin 的 mySQL 密码/用户名

mysql - 检查两个表中的多个值是否相等然后更新表的触发器