【问题标题】:informix query to look for where is null when no record is found未找到记录时,informix 查询查找哪里为空
【发布时间】:2013-12-09 13:16:41
【问题描述】:

我想编写一个查询来根据我传入的参数返回一个结果集,但是如果没有匹配的记录,我想返回该参数为空的结果集(我在 where 子句中使用的列可以为空)

我可以将这两种情况合并到一个查询中吗?是不是在性能方面比执行两个单独的查询更好。

execute select * from table where col_name is null 

当我没有为 select * from table where col_name = $param) 返回任何内容时

谢谢

【问题讨论】:

    标签: sql performance null informix


    【解决方案1】:

    这是一个条件语句,您无法在执行第一个查询之前对其进行验证,因为在运行查询之前您无法确定第一个不会得到结果。所以我会做第一个查询,如果没有找到结果,我会做第二个。

    你可以做的是:

    选择这两项,将 col_name = $param 的那些放在顶部,如果找不到 col_name = $param 的那些,则只使用 col_name 为 null 的那些;

    select * from table where col_name is null OR col_name = $param
    ORDER BY (col_name is null) ASC
    

    这应该为您提供顶部带有 col_name = $param 的记录,然后是带有 col_name NULL 的记录。如果第一条记录 col_name NOT NULL,则表示没有 col_name = $param 的记录。

    【讨论】:

    • 感谢 Filipe...希望这比在脚本端执行 if else 并调用两个 sql(即使它被缓存)并不昂贵
    • 不经过测试很难判断。两者都做并监控响应时间,看看你是否能看到真正的区别。如果你看不出有什么不同,那就选择让你的生活更轻松的那个吧:)
    • @SeanMshan。如果您觉得这回答了您的问题,请不要忘记将其标记为已接受(请参阅 here 了解其工作原理)
    猜你喜欢
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 2017-05-05
    相关资源
    最近更新 更多