sql - 如何将列与不同表中的计数进行比较?
问题描述
我有三个表:person、message 和 hasfriend。现在我需要显示每个拥有相同数量的朋友和发送消息的人。
人有每个人的信息,最重要的是电子邮件。Message 有一个名为“fromemail”的列,显示发送消息的人,hasfriend 也有一个名为“email”的列,它指的是表 person。
解决方案
你可以试试这样的想法:
SELECT p1.email, p2.email
FROM
(SELECT email, count(message_id) m_count, count(friend_id) f_count
FROM
person p
JOIN message m ON p.email = m.email
JOIN hasfriend f ON p.email = f.email) p1,
(SELECT email, count(message_id) m_count, count(friend_id) f_count
FROM
person p
JOIN message m ON p.email = m.email
JOIN hasfriend f ON p.email = f.email) p2
WHERE
p1.email = p2.email AND
p1.m_count = p2.m_count AND
p1.f_count = p2.f_count;
推荐阅读
- bash - 如何使用 sed 将变量字符串替换为另一个变量字符串
- php - 尝试加载 YouTube PHP API 时找不到类
- html - 垂直对齐
- delphi - 如何在设计时对其他单元可用的单独单元中定义具有已发布方法的类?
- javascript - 三元运算符和 OR 运算符的运算顺序
- java - 通过在 java 中创建并打包到 .dmg 中的应用程序访问 mac osx 上的麦克风
- docker - 如何从打开浏览器(非无头)的容器中运行赛普拉斯测试?
- entity-framework-core - 我可以有两个同一个类的“拥有的值对象”,但在 DBContext 中配置为有两个“所有者”吗?
- azure - ARM Microsoft.Web/sites "kind" 可能的值
- c++ - 在构造函数中分配内存失败如何冒泡