1
我的查詢應該返回特定人員的所有入站和出站消息的列表。我工作的Enron Email Dataset in MySQL,在此數據塊相同的消息無法用不同的標籤被複制,如«於»,«毫升»,«BCC»,是的,這DB是沒有得到很好的酸形成。MySQL中不同行的同一列的值的異或運算
但我想消除這個重複,例如,如果我收到帶有標記««»的消息,我不想看到同一個人發給同一個人的消息,標記爲«cc»。天真的做法是嘗試使用像XOR,這將排除所有重複,但如何讓它工作時,我應該比較不同行的同一列的值?
當前結果爲: 雖然我期望只看到這兩行中的一行,
那種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 = '[email protected]'
XOR
t.email = '[email protected]'
)
ORDER BY m.messagedt,
m.messageid;
我會強調,該查詢的目的是獲取已發送給特定用戶或來自特定用戶的所有消息的列表。這就是爲什麼我用JOIN兩次:一個用於入站郵件(人民爲t),一個用於出站(人民爲S)。隨意重新組織查詢。
請告訴我們的表結構(CREATE TABLE查詢) – BreyndotEchse 2014-11-08 13:49:00
可以提供樣本數據和預期在這裏或在sqlfiddle.com結果呢? – 2014-11-08 15:52:51
完整的示例數據:https://s3.amazonaws.com/rjurney_public_web/images/enron.mysql.5.5.20.sql.gz它是數據庫的MySQL轉儲,因爲您已將其上載到MySQL,您可以執行我的查詢或寫你自己的查詢。預期的結果是當我看到同樣的消息時,就像在第一個屏幕截圖中一樣,除了「r.reciptype」的值以外,其值完全相同,可能會有所不同(以/ cc/bcc)來顯示一個(第一個字符串)這些「相同」字符串。 – 2014-11-08 18:09:14