C# 只查找存在的记录
表是仅插入的表 我需要找到从未得到值1的记录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
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。但它正在发挥作用。谢谢