子查询的条件重用

时间:2013-03-26 19:27:36

标签: sql-server sql-server-2008 tsql sql-server-2005

无法弄明白......

Sql存储过程有一个可选参数,比如id(int)。为了简单起见,比方说,我必须返回一个带有额外...and id=@id的结果集,检查参数是否为空。如果不是,我只返回结果集。

如何避免两次写入查询的“核心”? CTE救援?

2 个答案:

答案 0 :(得分:2)

你可以做到

where .... and (@id is null or id = @id)

答案 1 :(得分:1)

你可以尝试:

select * from myTable where id = isnull(@id, id)

如果@id为null,则查询将其自己的id列与其自身进行比较,该列始终为true,否则为使用的参数。