一个 MYSQL 并集 的问题

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 昨天遇到一个看似很简单的SQL语句(多对多关系的)[基于MYSQL]。我问了我认识的所有计算机专业人士、若干研究生,没人会解。后来加了12个技术群,其中三个技术群的人,总计二十人讨论了两个多小时,无解。

昨天遇到一个看似很简单的SQL语句(多对多关系的)[基于MYSQL]。

我问了我认识的所有计算机专业人士、若干研究生,没人会解。
后来加了12个技术群,其中三个技术群的人,总计二十人讨论了两个多小时,无解。

我觉得这个问题不难,并且有可行的解决方案!需求是这样:

数据库结构:
user_name product_id
1 A
2 B
1 B
3 C
4 C
1 C

需求:哪些用户同时购买了 A,C,D?(或者说,同时购买A,C,D的用户都是那些?)
A,C,D是用户临时输入的,每次都确定、但不固定。


今天早晨起床,还是没有想到解决方案,于是我决定修改需求

就在这时候,我忽然想起来,我一好友 http://t.qq.com/chuwey,他一直为银行的数据库写SQL。

我打电话过去,大概说了我的要求,并渲染了一下这道题目很多人都没做出来,比较难,并且很多人建议我用正则,或者临时表等来解决。
他沉思了5秒钟,疑惑的说:“不需要那么复杂啊,你这个需求很简单,就是一个简单的求交集的问题,还是一个表之内的,一句SQL就可以解决。这样,我现在就短信发给你。”

于是就有了下面的SQL。

文本标记一下:

SELECT user_name
FROM product_buy
WHERE product_id in( 13834720379 , 2222485585 )
GROUP BY user_name
HAVING COUNT( DISTINCT product_id ) = 2 ;


后来,微博好友 http://t.qq.com/jcifox 也发来一种思路,共享一下。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
关系型数据库 MySQL 索引
【mysql】MySQL 复合索引
【mysql】MySQL 复合索引
31 0
|
3月前
|
存储 SQL 关系型数据库
MySQL 索引(下)
MySQL 索引(下)
|
4月前
|
前端开发 关系型数据库 MySQL
MySQL交集和差集的实现方法
MySQL交集和差集的实现方法
27 0
|
8月前
|
SQL 存储 关系型数据库
MySQL去重和设置别名
MySQL去重和设置别名
53 0
|
8月前
|
关系型数据库 MySQL
mysql排序查询
mysql排序查询
39 0
|
9月前
|
存储 关系型数据库 MySQL
mysql语句的集合
mysql语句的集合
32 1
|
9月前
|
存储 关系型数据库 MySQL
mysql语句集合
mysql语句集合
53 0
|
10月前
|
SQL 关系型数据库 MySQL
MySQL 8.0中的INTERSECT和EXCEPT
随着MySQL最新版本(8.0.31)的推出,MySQL增加了对SQL标准INTERSECT和EXCEPT表运算符的支持。让我们看看如何使用它们,我们将使用下表
|
11月前
|
SQL Oracle 关系型数据库
【MySQL学习笔记】系列六:MySQL中的排序与分页
【MySQL学习笔记】系列六:MySQL中的排序与分页
|
SQL 关系型数据库 MySQL