繁体   English   中英

如何在 Microsoft SQL SELECT 查询中进行 IF?

[英]How do I do an IF in Microsoft SQL SELECT query?

我是 SQL 的绝对初学者。 示例:我想查询 select 以 X 开头的人,如果结果为 0 ,我想查询 select 的人,其名字以 Y 开头。

我该怎么做呢? 谢谢。

我将问题解释为:如果找不到以 X 开头的名称,则显示以 Y 开头的名称。 此解决方案将很快,因为它会从找到 1 条记录的那一刻起缩短存在

if exists(select * from table where name like 'X%')
  begin
    select * from table where name like 'X%'
  end
else
  begin
    select * from table where name like 'Y%'
  end

理想情况下,名称列已编入索引以使其正常工作。

可能这是一个更好的解决方案:

select * from table where name like 'X%'

if @@ROWCOUNT = 0
   select * from table where name like 'Y%'

有一些方法可以在单个 SQL 语句中执行此操作,但它们非常昂贵(在时间和资源方面)。 您最好在存储过程中执行这种逻辑。

这是一个基于集合的解决方案:

SELECT * 
  FROM table 
 WHERE NAME LIKE 'X%'
UNION
SELECT * 
  FROM table 
 WHERE NAME LIKE 'Y%'
       AND NOT EXISTS (
                       SELECT * 
                         FROM table AS T1
                        WHERE T1.NAME LIKE 'X%'
                      );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM