C# 只查找存在的记录

C# 只查找存在的记录,c#,sql-server,C#,Sql Server,表是仅插入的表 我需要找到从未得到值1的记录 Id UserId Permission Value -- ------ ---------- ----- 1 2 1 0 2 2 1 1 我怎样才能做到这一点 select count(distinct(userId)) from XXXX w

表是仅插入的表

我需要找到从未得到值1的记录

Id        UserId     Permission       Value
--        ------     ----------       ----- 
1         2          1                0    
2         2          1                1
我怎样才能做到这一点

select count(distinct(userId)) from XXXX with(nolock)
where permission='1'  and value=0  
这不起作用,因为表中有userId列。有些用户ID的值也为1。我需要找到从未得到值1的用户ID

Id        UserId     Permission       Value
--        ------     ----------       ----- 
1         2          1                0    
2         2          1                1
当我执行查询时,count为1。 但是userid2也有值1。
如果UserId有值1的记录,我需要编辑我的查询,将计数设为0。

在两行之间阅读,我想您要的是一个带有条件聚合的HAVING子句:

以CTE为例 选择用户ID 从dbo.YourTable开始-使用NOLOCK-不要使用NOLOCK,除非您了解它真正在做什么 其中permission=1-这看起来像一个int,而不是varchar 按用户ID分组 当1时具有COUNTCASE[值],然后1结束=0 选择COUNTUserId 来自CTE;
从字里行间看,我认为你想要的是一个带有条件聚合的HAVING子句:

以CTE为例 选择用户ID 从dbo.YourTable开始-使用NOLOCK-不要使用NOLOCK,除非您了解它真正在做什么 其中permission=1-这看起来像一个int,而不是varchar 按用户ID分组 当1时具有COUNTCASE[值],然后1结束=0 选择COUNTUserId 来自CTE; 不在条款可能更有效:

select count(distinct(userId))
from XXXX 
with(nolock)
where userId NOT IN 
(SELECT userId FROM XXXX WHERE permission='1' and value=1)
不在条款可能更有效:

select count(distinct(userId))
from XXXX 
with(nolock)
where userId NOT IN 
(SELECT userId FROM XXXX WHERE permission='1' and value=1)

你说一列只有1或2条记录是什么意思?什么是唱片?你是说这张桌子只有两行吗?SELECT将只返回所述表中存在的行。也许真正的问题是您误用了NOLOCK查询提示,因此您得到了这里提到的效果:列可以有1或2。它的位类型。位数据类型只能存储1或0。在一位中存储2将导致1。我们确实需要一些示例数据和预期结果。你说的话本身没有多大意义。它的sql server我怎么能像那样使用@jdwengw你说的一列只有1或2条记录是什么意思?什么是唱片?你是说这张桌子只有两行吗?SELECT将只返回所述表中存在的行。也许真正的问题是您误用了NOLOCK查询提示,因此您得到了这里提到的效果:列可以有1或2。它的位类型。位数据类型只能存储1或0。在一位中存储2将导致1。我们确实需要一些示例数据和预期结果。你说的话本身没有多大意义。它的sql server我怎么能这样使用@jdwengI个人认为,在不知道用户数据的情况下,它不存在。虽然可以安全地假设userId不包含任何空值,但如果它包含空值,则不会返回任何行。因为表中有多个permissiontype。但它正在发挥作用。谢谢。我个人认为,当不知道用户的数据时,a不存在。虽然可以安全地假设userId不包含任何空值,但如果它包含空值,则不会返回任何行。因为表中有多个permissiontype。但它正在发挥作用。谢谢