我有下面的表和SQL查询写入,这个查询不应该返回任何结果,但它返回ID = 1
,SQL查询有什么问题?任何人都可以帮忙吗?MS SQL查询跨行多个搜索条件
**注意balance
数据类型是decimal
其余均为varchar
ID code balance level
1 C 150.00
1 P 40027.42 F
1 P 40027.42 F
select distinct ID from table
(
(code = 'P' and balance = 40027.42 and level = 'F') or
(code = 'C' and balance = 151.00)
)
group by ID
having count(ID) >=2
根据您'的having'条款'count(ID)> = 2',这个查询返回符合'where'子句并且有多于1行,'ID = 1'的行的'id'。由于您有两行'ID = 1',符合'(code ='P'和balance = 40027.42和level ='F')的条款,所以' 此外,此查询不需要'distinct'。 – SqlZim
having子句是好的,但问题是关于代码C的平衡值,表有150.00,我的查询有151.00,所以查询不应该返回任何结果,但它仍然忽略151.00 – AHS
我明白了,但你忽略了这样的事实:你有两行满足这个条件:'(code ='P'and balance = 40027.42 and level ='F')'既然你有两行满足条件,它就会通过'having count(ID) > = 2'。 _大于或等于2_ – SqlZim