Mysql 如何显示表_1中正好有n个条目的表_2中的条目?
所以我不完全确定如何以一种普遍的方式问这个问题,所以我只想问一下它是如何呈现给我的。两个相关表格为:Mysql 如何显示表_1中正好有n个条目的表_2中的条目?,mysql,sql,Mysql,Sql,所以我不完全确定如何以一种普遍的方式问这个问题,所以我只想问一下它是如何呈现给我的。两个相关表格为: Manager ( ID: integer, LoginID: varchar(16), Name: varchar(64), Password: varchar(8), Birthday: date, Address: varchar(128), Email: varchar(32), PhoneNumber: ch
Manager (
ID: integer,
LoginID: varchar(16),
Name: varchar(64),
Password: varchar(8),
Birthday: date,
Address: varchar(128),
Email: varchar(32),
PhoneNumber: char(10)
)
ManagerCertificate (
ManagerID: integer, -- Foreign key: ManagerID references Manager(ID)
CertificateId: integer,
Certificate: blob
)
显示每个拥有3个不同证书的经理的姓名和电子邮件
我试过几件事,但总是失败。
我是否使用嵌套子查询,计数运算符可能
select M.Name, M.Email
from Manager M, ManagerCertificate MC
??? where MC.ManagerID = M.ID ???
我期待着被指向正确的方向。我可能把事情复杂化了
谢谢我可以用Oracle SQL给你一个答案,你可以翻译一下
Select m.manager_id, m.manager_name
from managers m,
(select manager_id, count(*)
from certificates
group by manager_id
having count = 3) c
where m.manager_id = c.manager_id
我可以用Oracle SQL给你一个答案,你可以翻译一下
Select m.manager_id, m.manager_name
from managers m,
(select manager_id, count(*)
from certificates
group by manager_id
having count = 3) c
where m.manager_id = c.manager_id
使用COUNT进行连接是实现此目的的一种方法,它根据管理器名称和电子邮件进行分组,并使用“确保管理器正好有3个不同的证书”进行检查。请注意,MySQL<5.7将允许您在M.ID上分组,但最好编写仍适用于更高版本的查询。还请注意,带有ON子句的显式连接语法优于老式的逗号连接
SELECT M.Name, M.Email
FROM Manager M
JOIN ManagerCertificate MC ON MC.ManagerID = M.ID
GROUP BY M.Name, M.Email
HAVING COUNT(DISTINCT MC.CertificateId) = 3
使用COUNT进行连接是实现此目的的一种方法,它根据管理器名称和电子邮件进行分组,并使用“确保管理器正好有3个不同的证书”进行检查。请注意,MySQL<5.7将允许您在M.ID上分组,但最好编写仍适用于更高版本的查询。还请注意,带有ON子句的显式连接语法优于老式的逗号连接
SELECT M.Name, M.Email
FROM Manager M
JOIN ManagerCertificate MC ON MC.ManagerID = M.ID
GROUP BY M.Name, M.Email
HAVING COUNT(DISTINCT MC.CertificateId) = 3
我喜欢在这里使用子查询和COUNTDISTINCT
我喜欢在这里使用子查询和COUNTDISTINCT
您将需要分组,具有和计数不同。并且,请使用显式连接语法。您需要分组方式、具有和计数不同。请使用显式连接语法。您可能需要COUNTDISTINCT。。。以防经理多次收到相同的证书。OP没有具体说明,所以假设CertificateID是唯一的是不安全的。想法不错-我想象这些是某种管理认证,所以不会出现重复。不过,我很感谢你的贡献。使用古老连接语法的答案是如何获得投票的?你可能想要一个不同的答案。。。以防经理多次收到相同的证书。OP没有具体说明,所以假设CertificateID是唯一的是不安全的。想法不错-我想象这些是某种管理认证,所以不会出现重复。不过,我很感谢你的贡献。使用古老连接语法的答案是如何获得投票的?