首页 > 解决方案 > 如何将列与不同表中的计数进行比较?

问题描述

我有三个表:person、message 和 hasfriend。现在我需要显示每个拥有相同数量的朋友和发送消息的人。

人有每个人的信息,最重要的是电子邮件。Message 有一个名为“fromemail”的列,显示发送消息的人,hasfriend 也有一个名为“email”的列,它指的是表 person。

标签: sqlpostgresql

解决方案


你可以试试这样的想法:

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;

推荐阅读