mysql - 如何测试所有值是否存在于另一个表中?

标签 mysql

我有客户表、项目表和问题表。

clients
cid  cname
-----------
 c1   ca  
 c2   cb
 c3   cc

projects
pid  pname  cid
----------------
 p1   pa     c1
 p2   pb     c1
 p3   pc     c1
 p4   pd     c2
 p5   pe     c2

issues 
iid  iname  pid
----------------
i1     ia   p1
i2     ib   p2
i3     ic   p4
i4     id   p5

我想要那些项目都存在问题的客户。是c2。
如何为此编写 MYSQL 查询?

最佳答案

尝试使用having子句:

select
    c.cid,
    c.cname
from clients c
left join projects p
on c.cid = p.cid
left join issues i
on p.pid = i.pid
group by c.cid, c.cname
having count(distinct p.pid) = count(distinct i.pid) and count(distinct p.pid) > 0

检查 SQLFiddle此处演示。

关于mysql - 如何测试所有值是否存在于另一个表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055532/

相关文章:

Mysql根据季度计算增长

java - hibernate : convert mysql Query Datedif to HQL Query

php - 根据WordPress中的评论删除用户

php - MYSQL PHP查询将数据从一个表获取到另一个表

php - 使用 Mysql 和 php 正确计算税金

php - 我想知道是否有一些通用文本 block 用于尝试 "break"输入,例如文本字段

php - Google-App-Engine MySQL 数据库未连接

使用 implode() 函数时的 PHP MySQL 查询值

php POST表单查询更新动态变量

mysql - 使用聚集索引重新排列表中的记录