考虑名为 A 的下表:
State City Rank
S C 1
AB C1 2
* C2 3
我想选择所有列
- 如果 State 为 AB,则返回所有此类行
- 如果不满足条件 1,则返回状态为 * 的所有行。如果满足条件 1,请不要关注此条件
按照上面的例子,我应该得到第 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
但上面的查询返回不止一行。我想要与上述条件匹配的确切一行。
请帮忙
编辑1:
由于性能问题,我想避免子查询。