Sql 返回值为0的数据
我是一个新手,所以可能对你们来说是一个简单的SQL查询 在一个表中,我有针对一个SRID的PFAULT 0和1的记录。我只想获取那些0为PFault的记录。如果任何记录有PFault 1,则我不需要该记录 例如,一条记录可以同时具有0和1两个值,但我只需要那些没有1的记录。字段类型为位 样本表数据Sql 返回值为0的数据,sql,sql-server-2008,Sql,Sql Server 2008,我是一个新手,所以可能对你们来说是一个简单的SQL查询 在一个表中,我有针对一个SRID的PFAULT 0和1的记录。我只想获取那些0为PFault的记录。如果任何记录有PFault 1,则我不需要该记录 例如,一条记录可以同时具有0和1两个值,但我只需要那些没有1的记录。字段类型为位 样本表数据 ID | SRID | PFault ---- | ---- | ---- 2255 | 1212 | 0 2256 | 1212 | 0 2257 | 1212 | 1 2258 |
ID | SRID | PFault
---- | ---- | ----
2255 | 1212 | 0
2256 | 1212 | 0
2257 | 1212 | 1
2258 | 1213 | 0
2259 | 1213 | 1
2260 | 1214 | 0
2261 | 1214 | 0
2262 | 1216 | 0
如上所述,我需要的数据
SRID 1214 and 1216
我想您指的是SRID。如果您只需要这些:
select srid
from t
group by srid
having max(Pfault) = 0;
您也可以这样写:
have max(cast(Pfault as int)) = 0
如果需要原始行,请执行以下操作:
select t.*
from t
where not exists (select 1 from t t2 where t2.srid = t.srid and t2.Pfault = 1);
我想您指的是SRID。如果您只需要这些:
select srid
from t
group by srid
having max(Pfault) = 0;
您也可以这样写:
have max(cast(Pfault as int)) = 0
如果需要原始行,请执行以下操作:
select t.*
from t
where not exists (select 1 from t t2 where t2.srid = t.srid and t2.Pfault = 1);
您几乎已经用英语对它进行了措辞,可以非常直接地翻译成SQL。这是一个很好的开始。这样简单的翻译如下:
select srid from table
except
select srid from table where pfault = 1;
您几乎已经用英语对它进行了措辞,可以非常直接地翻译成SQL。这是一个很好的开始。这样简单的翻译如下:
select srid from table
except
select srid from table where pfault = 1;
从表Otr
其中PFault=0且不存在从表inr中选择1,其中inr.PFault=1和inr.SRID=Otr.SRID
按SRID分组
从表Otr
其中PFault=0且不存在从表inr中选择1,其中inr.PFault=1和inr.SRID=Otr.SRID
GROUP BY SRID谢谢你的回答,是的,我需要SRID,但我不能使用MAX函数,因为pfault的字段类型是“位”。谢谢你的回答,是的,我需要SRID,但我不能使用MAX函数,因为pfault.SQL的字段类型是“位”。原始的Fluent API:我半开玩笑地说,在很多情况下,这是千真万确的:如果你能用英语拼出来,有一个非常接近SQL的翻译,原始的Fluent API:我半开玩笑地说——在很多情况下,这是千真万确的:如果你能用英语拼出来,有一个非常接近SQL的翻译