从数据库WHERE中选择记录,但至少

时间:2016-04-10 18:54:22

标签: php sql codeigniter codeigniter-3

假设我有一张桌子

CREATE TABLE IF NOT EXISTS `Message` (
  `ConMsgID` int(11) NOT NULL AUTO_INCREMENT,
  `SenderID` int(11) DEFAULT NULL,
  `ReceiverID` int(11) DEFAULT NULL,
  `Text` text NOT NULL,
  `DateTime` datetime NOT NULL,
  `ReadStatus` tinyint(1) NOT NULL,
  `ReadDateTime` datetime DEFAULT NULL,
  PRIMARY KEY (`ConMsgID`),
  KEY `UserID` (`SenderID`),
  KEY `ReceiverID` (`ReceiverID`)
)

这是一个聊天消息表。想象一下,有2个用户正在聊天。 USER1和USER2

案例1:

USER1发送USER2,20条消息,并且USER2未读取。当USER2打开对话时,他必须看到所有20条消息。

案例2:

USER2回复USER1并发送3条消息,USER1未读。当USER1打开对话时,他将看到两个用户的最后15条消息。

希望我现在很清楚

1 个答案:

答案 0 :(得分:1)

相应地对数据进行排序,并将结果限制为15条记录

SELECT * 
FROM msgs 
ORDER BY case when ReadStatus = 0 then 1 else 2 end asc,
         id desc
LIMIT 15