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

时间:2014-12-17 09:35:29

标签: sql-server

我有一个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中列出的用户)。

所以&#34; OR&#34;表达式将包含其正在搜索的用户以外的每个用户,该用户存在于dbo.Users

我不能做WHERE&lt;&gt; &#39; AJONES&#39; (当前用户)因为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

实现此类查询的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

SELECT COUNT(Records) 
FROM dbo.Data D
INNER JOIN dbo.Users U
ON U.User = D.User
WHERE D.User <> 'ajones'

答案 1 :(得分:1)

SELECT COUNT(Records) 
FROM dbo.Data 
WHERE User <> 'ajones' AND User in (select distinct user from dbo.Users)