我想编写一个查询来根据我传入的参数返回结果集,但如果没有匹配的记录,我想返回结果集,其中该参数为null(我在where子句中使用的列是可空的)
我可以在一个查询中合并这两种情况吗?这是更好的性能,而不是执行两个单独的查询。
execute select * from table where col_name is null
当我没有为select * from table col_name = $ param返回任何内容时
由于
答案 0 :(得分:2)
这是一个条件语句,我无法在执行第一个查询之前进行验证,因为在运行查询之前,您无法确定第一个是否得到结果。所以我会做第一个查询,如果没有找到结果,我会做第二个查询。
你能做的是:
选择两者,将col_name = $ param放在顶部,只使用col_name为null的那些,如果找不到col_name = $ param的那些;
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。
的记录