Php 只获取最后一条记录-mysql查询

Php 只获取最后一条记录-mysql查询,php,mysql,sql,Php,Mysql,Sql,我有如下表格记录:- 我的桌子 id | rating | description 1 | 0.0 | bed 2 | 1.0 | good 3 | 0.0 | bed 4 | 1.0 | good 5 | 0.0 | bed 6 | 0.0 | bed

我有如下表格记录:-

我的桌子

        id |      rating | description

         1 |         0.0 | bed
         2 |         1.0 | good
         3 |         0.0 | bed
         4 |         1.0 | good
         5 |         0.0 | bed
         6 |         0.0 | bed
         7 |         0.0 | bed
        id | rating      | description

         2 |         1.0 | good
         4 |         1.0 | good
         1 |         0.0 | bed
     ==> 3 |         0.0 | bed
         5 |         0.0 | bed
         6 |         0.0 | bed
         7 |         0.0 | bed
现在我通过评级做空了这张表,得到了以下结果。 (查询:按等级描述从我的表格顺序中选择*)

结果表

        id |      rating | description

         1 |         0.0 | bed
         2 |         1.0 | good
         3 |         0.0 | bed
         4 |         1.0 | good
         5 |         0.0 | bed
         6 |         0.0 | bed
         7 |         0.0 | bed
        id | rating      | description

         2 |         1.0 | good
         4 |         1.0 | good
         1 |         0.0 | bed
     ==> 3 |         0.0 | bed
         5 |         0.0 | bed
         6 |         0.0 | bed
         7 |         0.0 | bed
现在我想要id=3的先前记录

预期结果

        id | rating      | description

         1 |         0.0 | bed
我怎样才能做到这一点。在单个mysql查询中? 请帮帮我。

用这个:

SELECT * FROM my_table ORDER BY rating DESC LIMIT 2,1
试试这个

SELECT prev.id, rating, description
FROM my_table current
JOIN my_table prev
  ON (prev.rating < current.rating) 
     OR (prev.rating = current.rating 
        AND (prev.description < current.description 
            OR (prev.description = current.description AND prev.id < current.id)))
WHERE current.id = @currentId
ORDER BY prev.rating desc, prev.description desc, prev.id desc
LIMIT 1
选择上一个id、等级、描述
从my_表当前
加入我的上表
开启(先前额定值<当前额定值)
或(先前额定值=当前额定值
和(先前描述<当前描述
或者(prev.description=current.description和prev.id
尝试以下快速解决方案:

从my_表中选择*,其中rating='0.0'和id尝试以下操作:

select * from my_table 
where rating<(select max(rating) from my_table)
and
id<3
limit 1; 
从my_表中选择*

这不是明智的解决方案。如果我想检索id为1的以前记录,会发生什么?您的查询每次都会给出静态输出Hello Robert Seddon Smith,这对id=1不起作用。当然不是-id1是您列表中的第一个,因此在此之前不会有其他查询。您真正想要什么?(为什么要记录3的上一条记录?)是否要评分为0.0的第一条记录?“第一”是什么意思?(我假设您的意思是第一条记录是具有最低“id”的记录,但您根本不按id排序。)您可以尝试一些简单的方法,例如从我的表中选择*,其中评级={what your want}按id限制排序1
。这里id=3不是静态的。假设我在查询中提供了id=1,那么它将检索记录4 | 1.0 |很好。请回答这个问题