gpt4 book ai didi

mysql - 获取连接表中有 2 个或更多条目匹配条件的记录

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

客户

id INT PK名称 VARCHAR

详细信息

id INT PKdetail_name VARCHAR

客户详细信息

customer_id INT FKdetail_id INT FK INT

<小时/>

对于每个客户,我都有一组详细信息。以下查询将获取详细信息 #2 等于 10 的所有用户:

SELECT c.* FROM customers c
INNER JOIN customers_details cd ON cd.customer_id = c.customer_id
WHERE cd.detail_id = 2 AND cd.value = 10

我的问题是,我需要获取所有具有 2 个或更多具体详细信息客户。例如:我想要获取所有具有详细信息 #2 = 10 AND 详细信息 #3 = 20 的客户

有没有一种简单的方法可以使用 SQL 来做到这一点?

最佳答案

我会这样做:

select c.*
from customers_details cd
inner join customers c
on c.id = cd.customer_id
where cd.detail_id in (2,10)
group by cd.customer_id
having
sum(cd.detail_id = 2 and cd.value = 1) = 1
and sum(cd.detail_id = 10) = 1

我在这里所做的是:

  • 按客户对详细信息进行分组
  • 如果满足条件则求和 1。如果有细节=2
  • 仅过滤同时具备这两个条件的客户
  • 我使用 WHERE 子句来过滤 HAVING 过滤器的较少结果,再次尝试避免完全扫描。

问候,

关于mysql - 获取连接表中有 2 个或更多条目匹配条件的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28505019/

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