【问题标题】:SQL request, inner joins on same table?SQL请求,同一张表上的内连接?
【发布时间】:2013-10-16 10:49:04
【问题描述】:

我有一个这样的 SQL 表 tbl_client_condition:

id_client | id_condition
1         | A
1         | B
1         | C
2         | A
2         | B
3         | A
3         | B
3         | C
3         | D
4         | C
5         | C
5         | D

我想获取所有具有 A、B 和 C 条件的客户端。所以在那个例子中,我想要客户端 1 和 3。

我不太清楚该怎么做,尤其是我想要的条件数量没有定义。这适用于 2 个条件 A 和 B,例如:

SELECT a.id_client
FROM (
SELECT *
FROM tbl_client_condition
WHERE id_condition = A
) AS a
INNER JOIN (
SELECT *
FROM tbl_client_condition
WHERE id_condition = B
) AS b ON a.id_client = b.id_client

但如果我想要 10 个 id_conditions 的记录,我不想做 10 个 INNER JOIN...

我相信一定有一个简单的解决方案。

谢谢

【问题讨论】:

  • 您使用的是什么 DBMS? mysql、oracle、mssql?
  • 我正在使用 MySQL,bvr 回答有效,谢谢!

标签: mysql sql inner-join


【解决方案1】:

试试这个

SELECT [id_client] FROM table1
WHERE [id_condition] IN ('A','B','C')
GROUP BY [id_client]
HAVING COUNT(distinct [id_condition]) = 3

SQL FIDDLE

这里COUNT(distinct [id_condition]) = 3IN 条件中使用的值的数量而变化

【讨论】:

    猜你喜欢
    • 2017-07-17
    • 2016-11-27
    • 2023-02-23
    • 2013-01-07
    • 1970-01-01
    • 2017-07-27
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多