SQL - 如果第一个选择行返回空,则选择另一行

Joe*_*oey 0 sql sql-server jdbc sql-server-2008

我正在使用SQL服务器.我有下表

Name   Number
A      123
B      456
C      789
D      000
Run Code Online (Sandbox Code Playgroud)

我有两个名字.我想编写一个sql语句,以便我可以选择检查表中是否存在第一个给定的名称.

  • 如果是这样,则sql返回具有第一个名称的行.
  • 如果没有,它将检查第二个名称.如果找到具有第二个名称的行,则返回该行.
  • 如果找不到两个名称,则返回空

例如,

  • 如果给出'A','C',则sql语句应该只返回名为'A'的行.
  • 如果给出'G','B',它应首先检查'G'但未找到,然后返回名称为'B'的行,因为找到了它.
  • 如果给出"X","Y",那么它应该返回空行

实现它的最有效但通用的SQL语句是什么?(我的意思是"泛型"是我想编写一个适合大多数Retional SQL DB而不仅仅是SQL服务器的sql语句)

提前致谢!

更新: 我的意思是说"空行"时返回"无行".我为我不正确的措辞道歉.

Hor*_*iux 5

select top 1 number from (

select 1 pos, number where name =@a
union all
select 2, number where name= @b)
order by pos
Run Code Online (Sandbox Code Playgroud)

  • @Horaciux http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/06/bad-habits-to-kick-order-by-ordinal.aspx (2认同)