gpt4 book ai didi

sql - 在子句中包含许多值 - SQL

转载 作者:行者123 更新时间:2023-12-02 07:34:56 24 4
gpt4 key购买 nike

我需要你的建议。

我的 T-SQL 查询中有一个 CASE 语句,如下所示:

CASE 
WHEN PLAN_GIVEN IN ( this list contains 1700 values to compare ) THEN 'P1'
WHEN PLAN_GIVEN IN ( this list contains 1800 values to compare ) THEN 'P2'
ELSE NULL
END AS PLAN_NAME

我无法列出所有 1700 个值 IN ( ) THEN 'P1' 因为所有这些值看起来都不太好。

我尝试将 1700 个值和 1800 个值保存到 lookup_table 中,例如

lookup_table  

columnA = all 1700 values
columnB = all 1800 values

并使用了这个查询:

CASE 
WHEN PLAN_GIVEN IN (SELECT columnA from lookup_table) THEN 'P1'
WHEN PLAN_GIVEN IN (SELECT columnB from lookup_table) THEN 'P2'
ELSE NULL
END AS PLAN_NAME

上面的代码可以运行,但是执行需要花费更多时间将近 10 分钟才能完成。

是否有其他方法可以实现此目的?

最佳答案

尝试使用 EXISTS 而不是使用 PLAN_GIVEN IN:

CASE 
WHEN EXISTS (SELECT NULL from lookup_table WHERE PLAN_GIVEN = columnA)
THEN 'P1'
WHEN EXISTS (SELECT NULL from lookup_table WHERE PLAN_GIVEN = columnB)
THEN 'P2'
ELSE NULL
END AS PLAN_NAME

或者,尝试连接到查找表并与 CASE 表达式中的查找值进行比较:

SELECT ...
CASE PLAN_GIVEN
WHEN lookup_table.columnA THEN 'P1'
WHEN lookup_table.columnB THEN 'P2'
ELSE NULL
END AS PLAN_NAME
...
FROM ...
LEFT JOIN lookup_table
ON PLAN_GIVEN IN (lookup_table.columnA, lookup_table.columnB)

关于sql - 在子句中包含许多值 - SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17600660/

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