gpt4 book ai didi

mysql - MySQL中不同行的同一列的值的异或

转载 作者:行者123 更新时间:2023-11-29 00:07:35 25 4
gpt4 key购买 nike

我的查询应该返回特定人员的所有入站和出站消息的列表。我正在研究 Enron Email Dataset in MySQL , 在此数据库中,不能使用不同的标签复制相同的消息,例如 «to»«cc»«bcc» , 是的,这个 DB 不是很好的 ACID 形成的。

但我想消除这种重复,例如如果我收到带有标签 «to» 的消息,我不想看到相同的消息发送给带有标签 «cc» 的同一个人。天真的方法是尝试使用像 XOR 这样的东西,它会排除所有重复,但是当我应该比较同一列在不同列中的值时如何让它工作行?

当前结果是: query result set example虽然我希望只看到这两行中的一行。

ERD的种类,表的结构,在查询中使用: Enron Email Dataset partly ERD

查询代码:

SELECT
left(m.messagedt, 10) AS 'date',
m.messageid AS 'message id',
r.reciptype AS 'type',
m.subject AS 'message subject',
b.body AS 'message body',
s.personid AS 'sender id',
s.name AS 'sender',
s.email AS 'sender email',
t.personid AS 'receiver id',
t.name AS 'receiver',
t.email AS 'receiver email'

FROM messages AS m
JOIN bodies AS b
ON b.messageid = m.messageid
JOIN recipients AS r
ON r.messageid = m.messageid
JOIN people AS t
ON t.personid = r.personid
JOIN people AS s
ON s.personid = m.senderid

WHERE (
s.email = 'lisa.jones@enron.com'
XOR
t.email = 'lisa.jones@enron.com'
)

ORDER BY m.messagedt,
m.messageid;

我要强调,查询的目的是获取已发送给特定用户或来自特定用户的所有消息的列表。这就是我两次使用 JOIN 的原因:一次用于入站消息(people as t),一次用于出站消息(people作为 )。请随意重新组织查询。

最佳答案

您的 XOR 消除了发件人发给自己的电子邮件。这是您真正需要的吗?

认为你需要

group by m.messageid, t.email

代替异或

关于mysql - MySQL中不同行的同一列的值的异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26817525/

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