Mysql 如何显示最新记录

Mysql 如何显示最新记录,mysql,sql,Mysql,Sql,我只想显示usersId中的最新记录 如何创建一个查询,从usersId中获得最新的ordersId 该表如下所示: 这是我使用的查询,但它显示了所有ordersId: SELECT * FROM `orders` WHERE usersId=? 要获取最新的一张唱片,请 按OrdersID按降序设置顺序,然后 使用“限制0,1”仅获取1条记录 所以,请换一个 SELECT * FROM `orders` WHERE usersId=? 到 在将$uid设置为会话中的用户id之前,先绑定$

我只想显示usersId中的最新记录

如何创建一个查询,从usersId中获得最新的ordersId

该表如下所示:

这是我使用的查询,但它显示了所有ordersId:

SELECT * FROM `orders` WHERE usersId=?

要获取最新的一张唱片,请

  • 按OrdersID按降序设置顺序,然后
  • 使用“限制0,1”仅获取1条记录
  • 所以,请换一个

    SELECT * FROM `orders` WHERE usersId=?
    


    在将$uid设置为会话中的用户id之前,先绑定$uid,然后再绑定

    $uid=$_SESSION['userid'];
    $stmt->bind_param("s",$uid);
    

    您可以按如下方式使用
    LIMIT
    子句:

    SELECT * FROM `orders` WHERE usersId=? 
     order by orderdate desc limit 1;
    
    select * from
    (SELECT t.*, 
           row_number() over (partition by usersId order by orderdate desc) as rn 
      FROM `orders` t WHERE usersId=?) t
    where rn = 1
    
    或者您可以使用分析函数
    行数
    ,如下所示:

    SELECT * FROM `orders` WHERE usersId=? 
     order by orderdate desc limit 1;
    
    select * from
    (SELECT t.*, 
           row_number() over (partition by usersId order by orderdate desc) as rn 
      FROM `orders` t WHERE usersId=?) t
    where rn = 1
    

    row\u number
    解决方案在您需要多个
    usersid

    的最新数据时非常有用,那么这两者之间有什么区别呢?如果您希望多个用户的最新数据
    usersid在(?,,?)
    中,那么分析函数可以为多个
    usersid
    提供最新数据,为什么会有任何区别?它通过引用绑定。如何定义“最新”行?请共享表结构、示例输入数据和预期输出。如果您添加了解决问题的尝试,那就更好了question@NicoHaase“最新ordersId”@Dharman这是否仅指每个usersId的最大ordersId值,或者这是否也可以以任何方式链接到orderDate列?假设ID是严格按升序分配的,安全吗?