2017-03-26 17 views
0

まず、私が使用しようとしているクエリを次に示します。MySQLが期待どおりに動作していない

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"ステートメントは、最新のログにパージされたデータベースがあった場合でも古いメッセージが残るように、各メッセージの最新のものを取得することです。

+1

のようないくつかのサンプルデータをGROUP_CONCAT()を使いますか? –

+0

サンプルデータとバインドパラメータと期待される出力を提供する必要があります。 – ysth

+0

なぜt2副選択を使用しているのか説明できますか? – ysth

答えて

-1

まず、INと括弧の間にスペースがあることがわかります.MySQLは「嫌い」です。

...AND convo_id IN(SELECT... 

しかし、それだけで話題投稿誤植だ場合、(MessagesConversationsのMySQLのスキームを)あなたのデータを共有してください:そのようなそれを修正。

+0

これは問題あります。何故ですか? – Stephen

+0

テストしましたか? 理由はわかりませんが、以前はこの問題に直面していました。 INが受け入れられた後、[公式のMySQLのドキュメント](https://dev.mysql.com/doc/refman/5.7/en/any-in-some-subqueries.html)のように見えます。 – deeplay

+0

ああ、それはskypeのdbファイルです:)私はそれがMySQLではないと思う、SkypeはSQLiteを使用します。そして、私はSQLite "IN"がMySQL "IN"と同じ働きをするかどうかはわかりません。 – deeplay

-1

以下のステートメントは、IN()関数に渡す必要があるものがCSVである行のリストを返します。

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

ので、代わりにこの

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

Um、no。 INで使用される副選択は、カンマで区切られた文字列ではなく、それぞれに単一の値を持つ行を戻す必要があります。 – ysth

+0

@ysth:あなたは正しいです。私はちょうど誤解のようにIN()のためのドキュメンタリーを見ました。 http://www.w3resource.com/mysql/comparision-functions-and-operators/in-function.php – blokeish

関連する問題