gpt4 book ai didi

Sql IN 函数

转载 作者:行者123 更新时间:2023-12-05 00:34:15 25 4
gpt4 key购买 nike

我有这样的东西作为 sql 表:

员工 ID 技能 ID
1780 128
1780 133
2061 128
2068 128

假设我将一个字符串传递给一个存储过程,如“128,133”。
我有一个 split 函数,所以 sql 可能如下所示:

SELECT DISTINCT EmplID
FROM EmplSkills
WHERE SkillID IN(SELECT data FROM dbo.Split(@Skills, ','))

您可以很容易地看到,通过 sql 语句,我们将获得 1780、2061 和 2068。我真正想要的是获得那些同时具有 128 和 133 作为技能 ID 的 EmplID,因此我应该只能获得 1780。

任何想法如何在没有一堆疯狂加入的情况下解决这个问题?

非常感谢。

最佳答案

SELECT EmplID
FROM EmplSkills
WHERE SkillID IN(SELECT data FROM dbo.Split(@Skills, ','))
GROUP BY EmplID
HAVING COUNT(DISTINCT SkillID) = (SELECT COUNT(*) FROM dbo.Split(@Skills, ','))

或者,如果您使用的是 SQL Server,则可以使用 CTE 使生活更轻松。
; WITH Skills AS (
SELECT DISTINCT data
FROM dbo.Split(@Skills, ',')
)
SELECT EmplID
FROM EmplSkills
WHERE SkillID IN ( SELECT data FROM Skills )
GROUP BY EmplID
HAVING COUNT(DISTINCT SkillID) = (SELECT COUNT(*) FROM Skills)

关于Sql IN 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10971351/

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