SQl从多个表中删除

SQl从多个表中删除,sql,join,Sql,Join,比如说,我有两个表Courses和faculty_Courses-每个表都有一个主键course_ID,它是varchar(50)not null 我试图从Courses表中删除一行,因此假设必须从两个表中删除该行,因为它们是通过关系链接的 我写了这个-不起作用-在关键字“JOIN”附近说了不正确的语法 删除 从课程加入课程上的教员课程。课程ID=教员课程。课程ID 其中faculty_courses.course_ID='ITM731' 有什么想法吗 你必须发表两项声明 DELETE Cour

比如说,我有两个表Courses和faculty_Courses-每个表都有一个主键course_ID,它是varchar(50)not null

我试图从Courses表中删除一行,因此假设必须从两个表中删除该行,因为它们是通过关系链接的

我写了这个-不起作用-在关键字“JOIN”附近说了不正确的语法

删除 从课程加入课程上的教员课程。课程ID=教员课程。课程ID 其中faculty_courses.course_ID='ITM731'


有什么想法吗

你必须发表两项声明

DELETE Courses where course_ID = 'ITM731'
DELETE faculty_courses WHERE course_ID = 'ITM731'

或者,如本文所述,使用delete级联。

您必须发出两条语句

DELETE Courses where course_ID = 'ITM731'
DELETE faculty_courses WHERE course_ID = 'ITM731'

或者,如本文所述,使用删除级联。

可以通过表之间的链接来处理所需内容。
如果您的RDBMS允许这样做。

可以通过表之间的链接来处理您想要的内容。 如果您的RDBMS允许这样做。

您可以创建

编辑 我建议您使用Ocedecio中的方法,显式地从两个表中删除,而不是级联。它让你的意图更加清晰。

你可以创建一个

编辑
我建议您使用Ocedecio中的方法,显式地从两个表中删除,而不是级联。它使您的意图更加清晰。

DELETE
仅从一个表中删除记录-连接语法仅用于在该表上选择正确的行,例如,在具有1:n关系的表上(不是此处的关系),并且您希望从“n”中删除所有记录与“1”表上的可选记录相关的表,然后在ntable.ref=reftable.ref其中reftable.column='whatyouneedtolookup'上执行从ntable内部联接reftable的删除操作

正如我所说,这与您当前的情况无关,您只需要在同一个键上为每个表发出两条
DELETE
语句


话虽如此,听起来你在桌子之间有一个1:1的参考,这让我觉得很奇怪-通常是这样的参考,简单的规范化是将两个表中的列合并到一个表中。

DELETE
only DELETE record from one table-连接语法仅用于在该表上选择正确的行,例如,在具有1:n关系的表上(这里没有)如果您想从“n”表中删除与“1”表中的可选记录相关的所有记录,那么您需要在ntable.ref=reftable.ref其中reftable.column='whatyouneedtolookup'上执行从ntable-internal-JOIN-reftable删除操作

alter table tablename drop column columnname
正如我所说,这与您当前的情况无关,您只需要在同一个键上为每个表发出两条
DELETE
语句


话虽如此,听起来好像在表之间有一个1:1的引用,这让我觉得很奇怪-通常对于这种引用,简单的规范化就是将表合并到一个表中,并包含两个表中的列。

我通常建议这样做,而不是级联删除。这是一个更明显的意图。我通常建议这样做,而不是级联删除。这一点更为明显,因为意图是什么。1:1关系在对实体进行子类型化的情况下是有效的。在这种情况下,我认为他可能错误地指出PK是两个表中的一列。可能教员课程是包含课程id的复合键?1:1关系在子类型化实体的情况下有效。在这种情况下,我认为他可能错误地指出PK是两个表中的一列。可能教员课程是包含课程id的复合键?OP希望删除行。没有列操作要删除行。不是专栏
alter table tablename drop column columnname