sql查询查找至少有2种帐户的用户

Posted

技术标签:

【中文标题】sql查询查找至少有2种帐户的用户【英文标题】:sql query to find users with at least 2 types of accounts 【发布时间】:2012-11-18 00:23:38 【问题描述】:

我是关系 sql 的新手。我试图找出一个查询来返回拥有不止一种帐户类型的客户的姓名。

客户:

+------------+--------------+ 
| cid        | Name         | 
+------------+--------------+ 
| 1          | Bob          |
| 2          | John         | 
| 3          | Jane         | 
+------------+--------------+ 

帐户:

+------------+--------------+ 
| aid        | type         | 
+------------+--------------+ 
| 1          | Checking     |
| 2          | Saving       | 
| 3          | CD           | 
+------------+--------------+ 

交易:

+------------+--------------+--------------+ 
| tid        | cid          | aid          | 
+------------+--------------+--------------+ 
| 1          | 1            | 1            | 
| 2          | 2            | 1            | 
| 3          | 1            | 2            | 
| 4          | 2            | 3            | 
| 5          | 3            | 1            | 
+------------+--------------+--------------+

使用这些表,查询应该返回 Bob 和 John。我在编写这样的查询时遇到了一些麻烦。更具体地说,我如何计算一个客户有多少个帐户,如果帐户不同,我如何在不向表中添加新列的情况下进行比较?

【问题讨论】:

【参考方案1】:

好的,这似乎适用于我的测试数据结构的 SQL Fiddle。使用您的真实数据结构进行尝试,看看它是否能满足您的需求。

SELECT name FROM customers c WHERE EXISTS(
  SELECT DISTINCT aid FROM transactions
  WHERE cid = c.cid
  HAVING COUNT(DISTINCT aid)>1
)

【讨论】:

天哪。我完全忘记了 DISTINCT!非常感谢!

以上是关于sql查询查找至少有2种帐户的用户的主要内容,如果未能解决你的问题,请参考以下文章

力扣570(MySQL)-至少有5名直接下属的经理(简单)

在 Oracle SQL Developer 中识别非空表

SQL - 使用数组

2023-01-03:超过5名学生的课。编写一个SQL查询来报告 至少有5个学生 的所有班级,返回结果不限顺序。请问sql语句如何写? +---------+ | class | +-----

用于查找 count > 1 的记录的 SQL 查询

SQL:至少有 10 名员工的部门名称