我有一个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
实现此类查询的最佳方式是什么?
答案 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)