我有两张桌子如下。理想情况下Table2.C1
是Table1.C1
的外键,但是最初没有设置外键。我们现在无法设置外键,因为Table2中存在一些孤立记录。我们希望将这些孤立记录列更新为NULL。
注意:我不想使用任何子/嵌套查询
Table1
--------
| C1 |
--------
| 1 |
| 2 |
| 3 |
| 4 |
|------|
Table2
---------------
| C1 | C3 |
---------------
| 1 | A |
| 1 | B |
| 8 | C |
| 9 | D |
| 2 | E |
|------|------|
我想为记录Table2.C1
和8
更新9
为NULL。
答案 0 :(得分:0)
您可以使用如下查询:
UPDATE Table2 SET C1 = NULL WHERE C1 NOT IN ( SELECT Table1.C1 FROM Table1 )
注意:SQL优化器应该通过使用JOIN运算符来优化此查询。因此,对于这样的简单查询,您使用嵌套子查询或通过连接是不重要的:
UPDATE Table2 SET C1 = NULL FROM Table2
LEFT JOIN Table1 ON Table2.C1 = Table1.C1
WHERE Table1.C1 IS NULL
大表查询的执行计划应该是相同的
答案 1 :(得分:0)
我没有看到你如何在没有子查询的情况下这样做,因为你不能在table1中对不存在的行进行JOIN ...