[英]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.