gpt4 book ai didi

sql - 检查 SQL Server 中的组中是否存在确切 ID 的逻辑

转载 作者:行者123 更新时间:2023-12-02 13:38:20 25 4
gpt4 key购买 nike

我有一些示例数据,例如:

INSERT INTO mytable ([ID], [FK_ID], [TYPE_ID])
VALUES
(1, 10, 1),
(2, 11, 1), (3, 11, 2),
(4, 12, 1), (5, 12, 2), (6, 12, 3),
(7, 14, 2), (8, 14, 3)

现在,我尝试检查 FK_ID 的每个组中 TYPE_ID1 和 2 是否完全匹配。

因此,预期输出如下:

  1. (1, 10, 1) 这应该会失败
    • 与组FK_ID = 10一样,我们只有一条记录
  2. (2, 11, 1), (3, 11, 2) 这应该通过
    • 与组FK_ID = 11一样,我们有两条记录。
    • 并且 TYPE_ID 都与 1 和 2 值匹配。
  3. (4, 12, 1), (5, 12, 2), (6, 12, 3) 这也应该失败
    • 因为我们这里有 3 条记录。
  4. (7, 14, 2), (8, 14, 3) 这也应该失败
    • 即使我们有确切的两条记录,它也应该会失败,因为此处的 TYPE_ID1 和 2 值不匹配。

这是我的尝试:

select * 
from mytable t1
where exists (select count(t2.TYPE_ID)
from mytable t2
where t2.FK_ID = t1.FK_ID
and t2.TYPE_ID in (1, 2)
group by t2.FK_ID
having count(t2.TYPE_ID) = 2);

这没有按预期工作,因为它还传递了具有三个记录的 FK_ID = 12

演示:SQL Fiddle

最佳答案

可能有几种不同的方法可以做到这一点。其中之一可能是:

SELECT FK_ID 
FROM mytable
GROUP BY FK_ID
HAVING COUNT(*) = 2
AND MIN(TYPE_ID) = 1
AND MAX(TYPE_ID) = 2

关于sql - 检查 SQL Server 中的组中是否存在确切 ID 的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46734825/

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