我是SQL的绝对初学者。 例: 我想查询以选择名称以X 开头的人(如果结果为0 ),我想选择名称以Y开头的人。
我该怎么做?感谢。
答案 0 :(得分:3)
我将问题解释为:如果找不到以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
理想情况下,名称列会被编入索引以使其正常运行。
答案 1 :(得分:1)
可能这是一个更好的解决方案:
select * from table where name like 'X%'
if @@ROWCOUNT = 0
select * from table where name like 'Y%'
答案 2 :(得分:0)
有一些方法可以在单个SQL语句中执行此操作,但它们非常昂贵(包括时间和资源)。最好在存储过程中使用这种逻辑。
答案 3 :(得分:0)
这是一个基于集合的解决方案:
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%'
);