我用的是sql server,目前有2张表,我想检查一下表1的复合主键是否没有包含在表2中。
我试过用这个,可惜在sql server中不起作用。在这种情况下,PK由id1和id2组成。
SELECT * FROM TABLE_1 WHERE (id1, id2) NOT IN (SELECT id1, id2 FROM TABLE_2)
我也见过更复杂的解决方案,但是,由于我试图生成这些查询作为python程序的一部分,我希望有一个简单的解决方案,如上面的1行。
我用的是sql server,目前有2张表,我想检查一下表1的复合主键是否没有包含在表2中。
我试过用这个,可惜在sql server中不起作用。在这种情况下,PK由id1和id2组成。
SELECT * FROM TABLE_1 WHERE (id1, id2) NOT IN (SELECT id1, id2 FROM TABLE_2)
我也见过更复杂的解决方案,但是,由于我试图生成这些查询作为python程序的一部分,我希望有一个简单的解决方案,如上面的1行。
1条答案
按热度按时间v1l68za41#
我会使用
EXISTS()
检查...就单行查询而言,我不推荐单行查询。原则上,代码应该是长而窄的,而不是短而宽的,列引用应该总是被限定的 (比如表名或别名)...
例如,你的非工作查询可能是这样布局的,并且突然看起来并不比基于
NOT EXISTS()
的查询短 (同时也明显更易于维护,对diff工具更友好,比如git等)。我也从Python * 生成SQL(无论是通过ORM还是我自己的抽象层)*,生成简洁的查询并不比“简短的单行查询”难。