【发布时间】:2014-06-13 20:43:01
【问题描述】:
我正在尝试删除基于另一个表的表中的陈旧记录。我们的问题是,课程是在 Table_A 中的两个不同建筑物中为学生提供的。我们需要根据 Student_ID 和 Building 比较 Table_A 和 Table_B。如果学生的Table_B大楼与Table_A不匹配,删除不属于同一大楼的记录,但保留同一大楼内的记录。
Table_A 包含学生日程:
- SCHOOL_YEAR
- STUDENT_ID
- 建筑
- 课程
Table_B 包含学生注册:
- STUDENT_ID
- 建筑
这是我想出的:
DELETE FROM Table_A
WHERE exists
(SELECT Table_B.STUDENT_ID, Table_B.BUILDING, TABLE_A.BUILDING
FROM TABLE_B
INNER JOIN TABLE_A ON Table_B.STUDENT_ID = Table_A.STUDENT_ID
AND Table_B.BUILDING <> Table_A.BUILDING
AND Table_A.SCHOOL_YEAR = 2015)
【问题讨论】:
-
不清楚您当前查询的哪一部分不起作用。也许是一些示例数据或fiddle
-
@paqogomez,语法错误。
-
许多数据库有不同的语法来根据另一个表的值删除一个表的内容。您正在运行哪个数据库?这将有助于获得更好的答案。 :)
标签: sql compare sql-delete records