在MYSQL中选择底部结果

时间:2012-04-11 17:43:56

标签: 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" ) 
ORDER BY addedDate ASC LIMIT 10

然而由于某些原因,这只返回7行,当使用不同的发送方和接收方组合时,如果行数少于7小于7的结果,即使每个应该给我至少10行我想要的。

我是否可以使用另一种方法来获得匹配的底部10行:

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

但按升序选择底部10。

1 个答案:

答案 0 :(得分: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

并且您不需要第二个LIMIT,因为您只从子查询中获得10个结果。