【发布时间】:2017-12-31 11:06:48
【问题描述】:
我已经描述了我喜欢高效的 1 SQL 查询的场景。我曾尝试使用临时表,但我发现自己无处可去。征求专家意见。我正在使用 SQL Server 2012。
我有 2 个表 A 表和 B 表。
Table A
ID TestName
Table B
ID TableAID LastUpdate
表B中的TableAID是表A的ID列。
场景 1:
Table A
ID TestName
1 Test 1
Table B
ID TableAID LastUpdate
如果表B没有任何记录,则将表A的所有记录插入表B
场景 2:
Table A
ID TestName
1 Test 1
Table B
ID TableAID LastUpdate
1 1
如果表A有记录并且匹配表B中的记录,则不做任何操作
场景 3:
Table A
ID TestName
1 Test 1
2 Test 2
Table B
ID TableAID LastUpdate
1 1
如果表A有记录且表B中不匹配,则插入表B
场景 4:
Table A
ID TestName
Table B
ID TableAID LastUpdate
1 1
2 2
如果表A没有记录,则更新表B中LastUpdate中所有记录的当前日期
我计划有 2 个临时表并使用 except 来过滤匹配的记录。但是我发现很难编写一个有效的查询。
【问题讨论】:
-
场景4不应该发生,如果你使用外键也不会发生。
-
表B中没有外键引用。表A是计算输出,可以当作临时表。
标签: sql performance sql-server-2012