【发布时间】:2011-05-01 23:44:55
【问题描述】:
有人可以帮我为这样的场景编写 sql:
Table 1
2 columns: ID, Name
Table 2
2 columns: ID, Name
我想要一个查询来显示表 1 中不在表 2 中的名称。因此,过滤掉表 1 中表 2 中的所有名称是结果查询。使用 ID 进行过滤而不是名称。
这将对我正在尝试做的事情有所帮助。提前致谢
【问题讨论】:
-
尼克,下面的所有建议(那些使用连接并检查 null 以及建议使用 NOT IN 子句的建议)都将起作用。但是,如果速度是一个问题,我相信 NOT IN 会更慢。如果速度不是问题,那么 NOT IN 可能更清晰。
-
INNER JOIN 的对立面是 OUTER JOIN,它有两种风格:LEFT 和 RIGHT,具体取决于您想要“outer”的 JOIN 的哪一侧
-
@Matt:你的想法是错误的,
NOT IN更快。 -
你说得对@Quassnoi。我花了一段时间才得到足够大的时间和数据集来测量它,但即使是查询执行计划也显示 NOT IN 大约快 50%。我不知道谁告诉我这个肮脏的谎言摆在首位! :)
标签: sql-server tsql inner-join outer-join