gpt4 book ai didi

sql - 仅当传递的参数具有值时才使用 Where 子句中的 'Exists'

转载 作者:行者123 更新时间:2023-12-03 20:26:41 26 4
gpt4 key购买 nike

我在存储过程中有一个类似下面的选择(为简洁起见缩短)。 @param 是存储过程的参数,可以为NULL。

SELECT name FROM Table1 WHERE EXISTS (select .... from table2 Where param = @param AND ... AND ...) AND ... AND ...

我希望仅当@param 有值时才使用 EXISTS 语句(粗体部分),否则忽略它。

如果可能,我不想使用动态 SQL 或临时表。我正在尝试使用 CASE 语句来处理 EXISTS 语句,但运气不佳。

最佳答案

在 WHERE 子句中使用 OR 很可能会非常慢,尤其是在存在 EXISTS 的情况下。

其他选项...

联合:只有一个会返回行

SELECT name FROM Table1 WHERE EXISTS (select .... from table2 Where param = @param AND ... AND ...) AND ... AND ...
UNION ALL
SELECT name FROM Table1 WHERE @param IS NULL AND ... AND ...

条件分支:

IF @param2 IS NULL
SELECT name FROM Table1 WHERE ... AND ...
ELSE
SELECT name FROM Table1 WHERE EXISTS (select .... from table2 Where param = @param AND ... AND ...) AND ... AND ...

关于sql - 仅当传递的参数具有值时才使用 Where 子句中的 'Exists',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com