2012-04-11 26 views
2

私はメッセージングシステムをコーディングしていますが、最後に10個のメッセージを昇順で(最下部に最新)選択しようとしています。しかし、これを行うことで問題を持つ:(MYSQLの一番下の結果を選択

これが用意されていますテーブル内の30行の上にある私の現在のSELECT文です。

SELECT * FROM 
(SELECT * FROM messages ORDER BY addedDate DESC LIMIT 10) tb 
WHERE (senderID = "1" OR receiverID = "1") 
AND (senderID = "3" OR receiverID = "3") 
ORDER BY addedDate ASC LIMIT 10 

しかし、何らかの理由で、このリターンだけを

7行、送信者と受信者の異なる組み合わせを使用する場合は、行数が少なくても、少なくとも10行を私に与える必要があるにもかかわらず、7つ以下の結果が得られます。

私は、下の10行目を取得する一致する:

WHERE (senderID = "1" OR receiverID = "1") 
AND (senderID = "3" OR receiverID = "3") 

ただし、下位10を昇順で選択します。

答えて

4

メインクエリではなく、サブクエリにWHERE文が必要です。

これを試してみてください:

SELECT * FROM 
(SELECT * FROM messages 
    WHERE (senderID = "1" OR receiverID = "1") 
    AND (senderID = "3" OR receiverID = "3") 
ORDER BY addedDate DESC LIMIT 10) tb 
ORDER BY addedDate ASC 

そして、あなたが唯一のサブクエリから10件の結果を得るよう、あなたは、その第二LIMITを必要としません。

+0

ありがとうございました!驚くばかり! –

関連する問題