首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql选择查询组合结果

问MySql选择查询组合结果
EN

Stack Overflow用户
提问于 2013-05-30 17:57:30
回答 4查看 104关注 0票数 0

嗨,我有2个表customers和customer_items。现在,在第二个表中的两个表中都有一个customer_id,每个客户可以有多个项目,因此表可以是这样的

代码语言:javascript
复制
id           |    item
----------------------------
1501         |    pillow
1501         |    blanket
1501         |    others
1502         |    pillow
1502         |    blanket
1502         |    others

现在如何使用mysql查询选择既有枕头又有毯子的客户

这是我的最后一种方法

代码语言:javascript
复制
select custlist.id FROM customers custlist LEFT JOIN customer_items custitems ON custitems.id=custlist.id WHERE (custitems.items='pillow' AND custitems.items='blanket') UNION ALL
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-30 18:00:53

这是一个Relational Division问题。

代码语言:javascript
复制
SELECT  a.customer_ID
FROM    customers a
        INNER JOIN customer_items b
            ON a.customer_ID = b.customer_ID
WHERE   b.item IN ('pillow', 'blanket')
GROUP   BY a.customer_ID
HAVING  COUNT(*) = 2

如果item对于每个customer_ID都不是唯一,则需要使用DISTINCT关键字来仅计算唯一的记录。

代码语言:javascript
复制
SELECT  a.customer_ID
FROM    customers a
        INNER JOIN customer_items b
            ON a.customer_ID = b.customer_ID
WHERE   b.item IN ('pillow', 'blanket')
GROUP   BY a.customer_ID
HAVING  COUNT(DISTINCT b.item) = 2
票数 1
EN

Stack Overflow用户

发布于 2013-05-30 18:07:42

JW对上述解决方案的细微变化:

代码语言:javascript
复制
SELECT  a.customer_ID
FROM    customers a
INNER JOIN (SELECT customer_ID, item FROM customer_items WHERE item = 'pillow' GROUP BY customer_ID) PillowCheck
ON a.customer_ID = PillowCheck.customer_ID
INNER JOIN (SELECT customer_ID, item FROM customer_items WHERE item = 'blanket' GROUP BY customer_ID) BlanketCheck
ON a.customer_ID = PillowCheck.customer_ID
票数 1
EN

Stack Overflow用户

发布于 2013-05-30 18:18:57

尝试此查询

代码语言:javascript
复制
SELECT 
   a.id 
FROM 
   customer_items a
INNER JOIN
   customer_items b
ON
   a.id= b.id and 
   a.item = 'PILLOW' AND 
   b.item='blanket'

如果您需要客户名称,则只需连接customer表即可。如果客户有多个枕头或毯子,则添加distinct

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16833120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档