gpt4 book ai didi

MySQL使用 "only if"条件选择行

转载 作者:行者123 更新时间:2023-11-29 11:07:43 27 4
gpt4 key购买 nike

我正在尝试编写一个查询来选择行,以便严格满足条件。我认为展示我正在尝试做的事情的最好方法是用一个例子。

假设我有下表

+------------+
| A_Table |
+----+-------+
| id | value |
+----+-------+
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
| 3 | 1 |
| 3 | 2 |
| 3 | 5 |
+----+-------+

我想要的是一个返回仅与给定值匹配的 id 的查询。例如,假设我想要 id 的值严格在 (1,2) 内,则 id=2 是唯一满足此要求的。尽管 id=3 具有值 1 和 2,但它并不严格只有这些值(以及 id=1)。

这是我提出的查询

select id
from A_Table a
where value in (1,2)
and not exists (
select b.id
from A_Table b
where value not in (1,2)
and b.id = a.id
);

但是这会返回 1 和 2,因为 in 运算符只满足 id 1 的值 1。我不确定如何强制执行“严格”部分。

最佳答案

我会使用聚合来做到这一点:

select a.id
from a_table a
group by a.id
having sum(a.value = 1) > 0 and -- id has value = 1
sum(a.value = 2) > 0 and -- id has value = 2
sum(a.value not in (1, 2)) = 0; -- id has nothing else

关于MySQL使用 "only if"条件选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41129237/

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