Php 我希望最高的值在列表的顶部

Php 我希望最高的值在列表的顶部,php,sql,Php,Sql,所以我有这个查询并显示值,“时间”是整数,它经常通过单击来更新,当它更新时,我希望页面刷新时列表顶部的最高值si,但它不是,我想知道分组是否会影响查询 $sql= "select * FROM message where userid_to = '$UserLoggedIn' || userid_from = '$UserLoggedIn' group by conversation_id ORDER BY time DESC"; 我认为您应该在

所以我有这个查询并显示值,“时间”是整数,它经常通过单击来更新,当它更新时,我希望页面刷新时列表顶部的最高值si,但它不是,我想知道分组是否会影响查询

$sql= "select * FROM message 
       where userid_to = '$UserLoggedIn' || userid_from = '$UserLoggedIn' 
       group by conversation_id 
       ORDER BY time DESC";

我认为您应该在子查询中对会话进行聚合,以查找每个会话的最近时间。然后返回您的
消息
表以获取完整的消息记录。我不确定您的订购出了什么问题,但您当前的查询不是确定性的

SELECT m1.*
FROM message m1
INNER JOIN
(
    SELECT conversation_id, MAX(time) AS max_time
    FROM message
    WHERE userid_to = '$UserLoggedIn' OR userid_from = '$UserLoggedIn' 
    GROUP BY conversation_id
) m2
    ON m1.conversation_id = m2.conversation_id AND
       m1.time = m2.max_time
ORDER BY
    m1.time DESC;

我认为您应该在子查询中对会话进行聚合,以查找每个会话的最近时间。然后返回您的
消息
表以获取完整的消息记录。我不确定您的订购出了什么问题,但您当前的查询不是确定性的

SELECT m1.*
FROM message m1
INNER JOIN
(
    SELECT conversation_id, MAX(time) AS max_time
    FROM message
    WHERE userid_to = '$UserLoggedIn' OR userid_from = '$UserLoggedIn' 
    GROUP BY conversation_id
) m2
    ON m1.conversation_id = m2.conversation_id AND
       m1.time = m2.max_time
ORDER BY
    m1.time DESC;

我会尝试这样做:

SELECT *,  MAX(time) as time
FROM message 
WHERE userid_to = '$UserLoggedIn' OR userid_from = '$UserLoggedIn'
GROUP BY conversation_id;

我会尝试这样做:

SELECT *,  MAX(time) as time
FROM message 
WHERE userid_to = '$UserLoggedIn' OR userid_from = '$UserLoggedIn'
GROUP BY conversation_id;

我使用了时间函数。在作业s周围加上括号可能会有所帮助。| |的优先级高于赋值。上面的查询将为每个会话id只提供一行。因此,每个会话id将获得一次。是否使用会话id上的group by来消除重复项?您的查询不正确,因为您是按
会话id
聚合的,但随后选择了所有列。看到此信息吗回答。特别是重要的更新。我使用了时间函数。在赋值s周围加括号可能会有所帮助。| |的优先级高于赋值。上面的查询将为每个会话id只提供一行。因此,每个会话id将获得一次。是否使用会话id上的group by来消除重复项?您的查询不正确,因为您是按
会话id
聚合的,但随后选择了所有列。看到此信息吗回答。特别是重要的更新。我不会这样做,因为这个查询甚至不会在MySQL的某些配置(或大多数其他数据库)下运行。它应该在标准配置的MySQL数据库上工作。你能提供一些例子来说明在什么配置下这不起作用吗?查看模式。可以。谢谢。我不会这样做,因为这个查询甚至不会在MySQL的某些配置下运行(或者在大多数其他数据库上)。它应该可以在标准配置的MySQL数据库上运行。你能提供一些例子来说明在什么配置下这不起作用吗?查看模式。可以。谢谢