【发布时间】:2012-10-13 05:02:46
【问题描述】:
我有以下表格:
RecordID
101
102
103
104
105
106
TableOne
101
102
103
104
TableTwo
TableThree
101
102
并且我需要删除未包含在其他表中的 RecordsID 行。请注意,有时 TableOne、TableTwo、TableThree 表之一可能为空,此时不应删除任何记录。
结果表应该是:
RecordID
101
102
由于空表,我无法使用 INNER JOIN。而且因为我在函数中使用这些代码,所以我无法创建仅包含带有记录的表的动态 SQL 语句并执行它。
我可以用 IF 语句做到这一点,但在我的实际情况下,我有很多案例要检查,很多表要加入,结果会出现很多代码重复。
这就是为什么我开始想知道有没有办法通过 CROSS APPLY 更聪明、更干净地做到这一点?
【问题讨论】:
-
答案是 105 和 106,因为它们不包含在任何其他表格中..对吗?
-
不,您应该只删除其他表中不符合的记录。
标签: tsql sql-server-2012 cross-apply