考虑下面的名为A的表:
State City Rank
S C 1
AB C1 2
* C2 3
我想选择所有列
按照上面的例子,我应该得到第2行。我尝试了几件事,比如
select state
case when a.state = 'AB' then 1
when a.state = '*' then 2
end as priority from A where state in ('AB','*') order by priority
但是上面的查询会返回多行。我想要完全符合上述条件的一行。
请帮忙
EDIT1:
由于性能问题,我想避免子查询。
答案 0 :(得分:3)
试试这个:
select * from A
where state=case
when exists(select * from A where state='AB') then 'AB'
else '*'
end
以上SQL Fiddle展示了上述内容。