我有下面的表和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