选择MYSQL中的底部结果

选择MYSQL中的底部结果,mysql,select,Mysql,Select,我正在编写一个消息传递系统,我正在尝试选择按升序发送的最后10条消息(最新消息在底部) 但是,这样做有一个问题:( 这是我当前的SELECT语句,表中有30多行可用 SELECT * FROM ( SELECT * FROM messages ORDER BY addedDate DESC LIMIT 10 ) tb WHERE ( senderID = "1" OR receiverID = "1" ) AND ( senderID = "3" OR receiverID = "3" )

我正在编写一个消息传递系统,我正在尝试选择按升序发送的最后10条消息(最新消息在底部)

但是,这样做有一个问题:(

这是我当前的SELECT语句,表中有30多行可用

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行

是否有其他方法可用于获取匹配的底部10行:

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

但按升序选择底部的10个。

子查询中应该有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个结果。

子查询中应该有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个结果