小编Joe*_*ich的帖子

SQL if(exists())查询重复

我需要编写一个从表中获取一组信息的查询,但如果没有该特定客户端的信息,则使用默认集.我想知道是否有办法避免if(exists())语句中的查询重复.

例如:

IF( EXISTS( SELECT * FROM UserTable WHERE Name = @UserName))
BEGIN
    SELECT * FROM UserTable WHERE Name = @UserName))
END
ELSE
BEGIN
    SELECT * FROM UserTable WHERE Name = 'Jon Skeet'))
END
Run Code Online (Sandbox Code Playgroud)

前两个选择(存在和if的真实部分)完全相同.如果语句为true,我想避免两次运行相同的查询.我知道一旦满足第一个真实条件就存在停止,但这仍然是O(n)最坏的情况.

我知道的另一个选项是将信息放在临时表中并检查信息是否存在,如果没有返回默认信息.

两种方式都可以,但最好的方法是什么?还有其他方法吗?有没有办法在WHERE子句中执行此操作,因为这是唯一不同的东西?

编辑:修复示例返回行而不仅仅是单个项.因此,将select转储到单个变量的答案将等于我假设的临时表.另外,为了不激怒Jon Skeet,他的名字拼写正确

sql

3
推荐指数
1
解决办法
7536
查看次数

标签 统计

sql ×1