SQL Server 查询。用户存在于另一个表中但不存在用户的位置

Posted

技术标签:

【中文标题】SQL Server 查询。用户存在于另一个表中但不存在用户的位置【英文标题】:SQL Server query. Where user exists in another table but not the user 【发布时间】:2014-12-17 09:35:28 【问题描述】:

我有一个 SQL 服务器查询,我正在努力实现它,但我很难找到合适的词来描述它以在 MSDN 上查看。我拥有的是一张数据表和一张用户表。我想为 dbo.Users 中的每个用户创建一个循环,以计算 dbo.Data 中的记录,其中用户不是循环中的当前用户,而是 dbo.Users 中列出的用户。

即。

SELECT COUNT(Records) 
FROM dbo.Data 
WHERE User <> 'ajones' AND (User = 'jbloggs' OR User ='jdoe')

(其中 ajones 是当前用户,jbloggs 和 jdoe 是 dbo.Users 中列出的用户)。

所以“OR”表达式将包含除它正在搜索的用户之外的每个用户,这些用户都存在于 dbo.Users 中

我不能在 WHERE 'ajones'(当前用户),因为 dbo.Data 表中有很多用户,但只有一些用户出现在 dbo.Users 中。

这有意义吗?一些伪代码:

FOR EACH User in dbo.Users
    SELECT COUNT(Records) 
    FROM dbo.Data 
    WHERE User <> CurrentUser AND User IN dbo.Users
Loop

实现这种查询的最佳方法是什么?

【问题讨论】:

您在两个表中都有用户 ID 还是只有用户名?您是否有一些示例数据和所需的输出来说明您的目标? 【参考方案1】:
SELECT COUNT(Records) 
FROM dbo.Data 
WHERE User <> 'ajones' AND User in (select distinct user from dbo.Users)

【讨论】:

你的答案可能是对的。但最好在 *** 中添加有关代码片段的 cmets,以解释为什么这样回答问题。 我认为开发人员不需要那么描述性......一切都由 sql 代码解释 一句话解释,可以帮助和原发者有同样问题的新手开发者。我同意它可能并不总是需要。我在您的答案中添加了评论,因为该答案在低质量帖子列表中,在评论者的审核队列中。 另一个答案也没有任何cmets。那也是低质量的帖子吗?我可以多了解一点“低质量”吗? 我不知道。在页面***.com/review 所有声望超过 2000 的 SO 成员都可以查看“低质量帖子”队列。我不知道该队列的标准是什么,而且并非所有审阅者都能看到队列中的所有帖子。【参考方案2】:
SELECT COUNT(Records) 
FROM dbo.Data D
INNER JOIN dbo.Users U
ON U.User = D.User
WHERE D.User <> 'ajones'

【讨论】:

以上是关于SQL Server 查询。用户存在于另一个表中但不存在用户的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何获取一个MySql表中存在的记录而不是另一个[重复]

sql server 2000返回在第一个表中但不在第二个表中的数据

只要它们不存在于另一个表T-SQL中,就从一个表中检索记录[重复]

SQL Server 将现有表复制到新表中但跳过重复记录

删除一个表中存在而另一个表中不存在的数据?

如果行存在于另一个表中,如何更新 (SQL)