在 SQL 中,如何执行“减法”?手术?
假设我有两个表,它们都有用户 ID。我想要执行一项操作,返回表 1 中不在表 2 中的所有用户 IDS。我知道必须有一些简单的方法来执行此操作 - 谁能提供一些帮助?
Suppose I have two tables, which both have user ids. I want to perform an operation that would return all user IDS in table 1 that are not in table 2. I know there has to be some easy way to do this - can anyone offer some assistance?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
虽然速度很慢,但通常可以通过“not in”之类的命令来完成此操作。 (各种 RDBMS 系统中还有其他函数可以以更好的方式执行此操作,例如 Oracle 有一个“exists”子句可用于此目的。
但您可以说:
Its slow, but you can normally accomplish this with something like 'not in'. (There are other functions in various RDBMS systems to do this in better ways, Oracle for instance has a 'exists' clause that can be used for this.
But you could say:
有几种方法可以做到这一点。这是使用 NOT EXISTS 的一种方法:
这是使用联接的另一种方法:
最快的方法取决于数据库。
There are a few ways to do it. Here's one approach using
NOT EXISTS
:And here's another approach using a join:
The fastest approach depends on the database.
一种方法是使用 EXCEPT(如果您的 TSQL 方言支持)。相当于执行左连接和空测试
One way is to use EXCEPT if your TSQL dialect supports it. It is equivalent to performing a left join and null test
如果是的话
SQL Server:
Oracle:
休息:我不确定......
If it is
SQL Server:
Oracle:
Rest: Am not sure....
试试这个:
Try this: