gpt4 book ai didi

mysql - 获取收件人的线程消息

转载 作者:行者123 更新时间:2023-11-29 00:46:55 27 4
gpt4 key购买 nike

我有这样的数据库模式:

users
USERNAME (PK), SEX
Alex, F
John, M
Troy, M
Matt, M

messages
ID (PK), CREATOR (FK users), DATE_CREATED
1, John, 2012-04-15
2, Troy, 2012-04-16

message_recipients
ID, MESSAGE_ID (FK messages), RECIPIENT (FK users), DATE
1, 1, John, 2012-04-15
2, 1, Troy, 2012-04-15
3, 1, Matt, 2012-04-15
4, 2, Alex, 2012-04-16
4, 2, John, 2012-04-16

挑战在于,我想获得一个只有 John、Troy 和 Matt 作为收件人的消息 ID。

这是我的查询:

SELECT mr1.MESSAGE_ID
FROM message_recipients mr1, message_recipients mr2
WHERE mr1.MESSAGE_ID = mr2.MESSAGE_ID
AND mr1.RECIPIENT = mr2.RECIPIENT
AND mr2.RECIPIENT = 'John'
AND mr2.RECIPIENT = 'Troy'
AND mr2.RECIPIENT = 'Matt'

上面的 SQL 显示没有结果。

如果我执行此查询:

SELECT mr1.MESSAGE_ID
FROM message_recipients mr1, message_recipients mr2
WHERE mr1.MESSAGE_ID = mr2.MESSAGE_ID
AND mr1.RECIPIENT_ID = mr2.RECIPIENT_ID
AND (mr2.RECIPIENT_ID = 'John'
OR mr2.RECIPIENT_ID = 'Troy'
OR mr2.RECIPIENT_ID = 'Matt')
GROUP BY mr1.MESSAGE_ID

结果:

MESSAGE_ID
1
2

上面的结果是不正确的,因为我想看到的结果只有1(MESSAGE_ID)。

我做错了什么?有没有大佬解惑一下?

非常感谢, 约翰

最佳答案

我不太确定你想要什么。但是一个专栏不能是 3 件事。您可以只使用 IN 语法。像这样:

SELECT mr1.MESSAGE_ID
FROM message_recipients mr1, message_recipients mr2
WHERE mr1.MESSAGE_ID = mr2.MESSAGE_ID
AND mr1.RECIPIENT = mr2.RECIPIENT
AND mr2.RECIPIENT IN('John','Troy','Matt')

或者像这样的 OR 语法:

SELECT mr1.MESSAGE_ID
FROM message_recipients mr1, message_recipients mr2
WHERE mr1.MESSAGE_ID = mr2.MESSAGE_ID
AND mr1.RECIPIENT = mr2.RECIPIENT
AND
(
mr2.RECIPIENT = 'John'
OR mr2.RECIPIENT = 'Troy'
OR mr2.RECIPIENT = 'Matt'
)

编辑

我还不确定你想要什么。但这听起来有点像你想要这样的东西:

SELECT
m.ID AS MESSAGE_ID,
m.CREATOR,
mr.RECIPIENT,
mr2.RECIPIENT
FROM
messages AS m
LEFT JOIN message_recipients AS mr
ON m.ID=mr.MESSAGE_ID
AND mr.RECIPIENT='Troy'
LEFT JOIN message_recipients AS mr2
ON m.ID=mr2.MESSAGE_ID
AND mr2.RECIPIENT='Matt'
WHERE
m.CREATOR='John'

关于mysql - 获取收件人的线程消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com