查找不同人对之间的重复消息

时间:2019-05-16 06:48:11

标签: mysql

我有这个数据库

CREATE TABLE Users(
uid int PRIMARY KEY,
name text,
phone text
);

CREATE TABLE Messages(
recipient int REFERENCES Users(uid),
sender int REFERENCES Users(uid),
time timestamp NOT NULL,
message text NOT NULL,
PRIMARY KEY (recipient, sender, time)
);

我想确定是否有一条消息在用户之间发送了多次。

例如,如果介于1之间的消息已向5发送了“ Hello”消息,又有4之间的消息向8发送了该消息,例如,我想打印消息“ Hello”。但是,如果只发送一次,那么我就不要了。我希望至少重复两次,但要使用不同的用户。如果用户1和5发送了2次,我不希望它出现。

1 个答案:

答案 0 :(得分:1)

我们可以尝试以下查询:

SELECT message
FROM Messages
GROUP BY message
HAVING
    MIN(LEAST(sender, recipient)) <> MAX(LEAST(sender, recipient)) OR
    MIN(GREATEST(sender, recipient)) <> MAX(GREATEST(sender, recipient));

此逻辑标记任何出现多次且涉及两个或多个不同发件人或两个或多个不同收件人的邮件。