簡體   English   中英

MySQL並且不能按預期工作

[英]MySQL AND not working as expected

首先,這是我要使用的查詢。

SELECT * FROM Messages t WHERE perspective_user=? and timestamp BETWEEN ? AND ? AND 
timestamp_added = 
(select max(timestamp_added) from Messages t2 
where 
t2.author = t.author AND
t2.body = t.body AND
t2.timestamp = t.timestamp AND
t2.timestamp_added <= ?
) AND convo_id IN (SELECT convo_id FROM Conversations WHERE perspective_user=? AND identity=? AND timestamp_added=?);

該代碼在沒有以下行的情況下可以正常工作,但是有了它,它返回0個結果。

AND convo_id IN (SELECT convo_id FROM Conversations WHERE perspective_user=? AND identity=? AND timestamp_added=?);

我還驗證了上面的行是獨立運行的,並在基本的SELECT *查詢上進行了測試。 我還確保數據庫中有滿足最高級查詢的行。

數據是Skype消息的日志。 日志是隨機抽取的; 目標是獲取仍在數據庫中的最新日志。 目的是能夠繪制我的Skype消息並做其他有趣的事情。 Skype會在我的計算機上清除較舊消息的數據庫。 長的“ timestamp_added”語句用於獲取每條消息的最新消息,因此,如果最新日志具有已清除的數據庫,則仍將包含舊消息。

我首先看到的是,IN和括號之間有一個空格-MySQL“討厭”它。 像這樣修復它:

...AND convo_id IN(SELECT... 

但是,如果僅是發布拼寫錯誤的主題,那么請共享您的數據(MySQL的Messages and Conversations方案)。

下面的語句返回一個行列表,其中需要傳遞給IN()函數的是CSV。

(SELECT convo_id FROM Conversations WHERE perspective_user=? AND identity=? AND timestamp_added=?)

因此,改為使用GROUP_CONCAT()

(SELECT GROUP_CONCAT(convo_id) FROM Conversations WHERE perspective_user=? AND identity=? AND timestamp_added=? GROUP BY convo_id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM