【问题标题】:SQL Server query. Where user exists in another table but not the userSQL Server 查询。用户存在于另一个表中但不存在用户的位置
【发布时间】: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 还是只有用户名?您是否有一些示例数据和所需的输出来说明您的目标?

标签: sql-server


【解决方案1】:
SELECT COUNT(Records) 
FROM dbo.Data 
WHERE User <> 'ajones' AND User in (select distinct user from dbo.Users)

【讨论】:

  • 你的答案可能是对的。但最好在 StackOverflow 中添加有关代码片段的 cmets,以解释为什么这样回答问题。
  • 我认为开发人员不需要那么描述性......一切都由 sql 代码解释
  • 一句话解释,可以帮助和原发者有同样问题的新手开发者。我同意它可能并不总是需要。我在您的答案中添加了评论,因为该答案在低质量帖子列表中,在评论者的审核队列中。
  • 另一个答案也没有任何cmets。那也是低质量的帖子吗?我可以多了解一点“低质量”吗?
  • 我不知道。在页面stackoverflow.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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多