我正在构建一个私有消息系统。
我想根据通话时间得到最新消息。现在它按时间顺序显示消息,但我希望它按逆时间顺序显示,最新消息在顶部,等等
表
SELECT `messages`.`id`,
`messages`.`sender`,
`messages`.`receiver`,
`messages`.`message`,
`messages`.`datetime`,
`messages`.`classifield_id`
FROM `augl`.`messages`;
功能
public function getMessageList()
{
$current_user = $this->accounts->getUserId();
$query = $this->db->query("SELECT * FROM(
SELECT id, LEAST(receiver) as receiver, LEAST(sender) AS sender, message, datetime, classifield_id
FROM messages
WHERE sender='$current_user' OR receiver = '$current_user'
Group By (if(sender > receiver, sender, receiver))
, (if(sender > receiver, receiver, sender))
)
as id");
$result = $query->result();
//var_dump($result); die;
foreach ($result as $messages )
{
$return[$messages->id] = $messages;
if ($messages->receiver === $current_user)
{
$return[$messages->id]->userr = $this->accounts->getUsername($messages->sender);
$return[$messages->id]->userid = $messages->sender;
//$return[$messages->id]->message = $messages->message;
}
else
{
$return[$messages->id]->userr = $this->accounts->getUsername($messages->receiver);
$return[$messages->id]->userid = $messages->receiver;
//$return[$messages->id]->message = $messages->message;
}
}
return $return;
}
如果您将"LEAST"更改为"GREATEST",则可能会修复它。
请参阅MySQL手册中的教程。你想要GROUPWISE MAXIMUM,显然是MIN而不是MAX来满足你的需求。