[英]Complicated SQL query request
我有桌子
Number Letter KeyLetter
1 a 1
1 b 0
1 c 0
1 d 0
2 e 0
2 f 0
2 g 0
3 h 1
3 i 1
3 j 0
從它我想要這個:
Number Letter KeyLetter
1 a 1
2 e 0
2 f 0
2 g 0
3 h 1
3 i 1
對於每組數字,如果字母是一個KeyLetter,我想忽略所有非KeyLetter。 如果一組數字中沒有字母是KeyLetter的條目,則顯示該組數字中的所有條目。
什么SQL查詢將能夠做到這一點?
簡單的答案,返回KeyLetter = 1的行,以及Number不具有KeyLetter = 1的行。
select *
from tablename t1
where t1.KeyLetter = 1
or not exists (select * from tablename t2
where t1.Number = t2.Number
and t2.KeyLetter = 1)
或者:
select t1.*
from tablename t1
join (select Number, max(KeyLetter) maxKeyLetter
from tablename
group by Number) t2
on t1.Number = t2.Number and t1.KeyLetter = t2.maxKeyLetter
要么...
select *
from tablename
where (Number, KeyLetter) in
(select Number, max(KeyLetter)
from tablename
group by Number)
前兩個符合Core ANSI SQL。 后者使用擴展F641,“行和表的構造函數”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.