说,我有两个表课程和faculty_courses - 每个都有一个主键course_ID,即varchar(50)不为空。
我正在尝试从Courses表中删除一行 - 所以假设必须从两个表中删除该行,因为它们是通过关系链接的。
我写了这个 - 不起作用 - 说关键字'JOIN'
附近的语法不正确DELETE 来自课程JOIN faculty_courses ON Courses.course_ID = faculty_courses.course_ID WHERE faculty_courses.course_ID ='ITM731'
有什么想法吗?
答案 0 :(得分:6)
你必须发表两个声明。
DELETE Courses where course_ID = 'ITM731'
DELETE faculty_courses WHERE course_ID = 'ITM731'
或者,如此处所述,使用删除级联。
答案 1 :(得分:2)
您可以通过表之间的ON DELETE CASCADE链接来处理您想要的内容。 只要您的RDBMS允许这样做。
答案 2 :(得分:2)
答案 3 :(得分:0)
DELETE
只删除一个表中的记录 - JOIN语法仅用于选择该表上的正确行,例如,在具有1:n关系的表上(不是您在此处拥有的)和您想要删除“n”表中与“1”表上的可选记录相关的所有记录,然后你会DELETE FROM ntable INNER JOIN reftable ON ntable.ref = reftable.ref WHERE reftable.column = 'whatyouneedtolookup'
。
正如我所说,这与您目前的情况无关,您只需要在同一个密钥上发出两个DELETE
语句 - 每个表一个。
话虽这么说,听起来你在表之间有一个1:1的引用,这对我来说很奇怪 - 通常用这种引用,琐碎的规范化将把表合并到一个表中两张桌子。
答案 4 :(得分:-2)
alter table tablename drop column columnname