Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL从表中选择,获取表中最新/最后10行_Php_Mysql_Sql_Sql Order By - Fatal编程技术网

Php MYSQL从表中选择,获取表中最新/最后10行

Php MYSQL从表中选择,获取表中最新/最后10行,php,mysql,sql,sql-order-by,Php,Mysql,Sql,Sql Order By,最好、最简单的方法是什么?我目前的查询是: SELECT * FROM chat WHERE (userID = $session AND toID = $friendID) OR (userID = $friendID AND toID = $session) ORDER BY id LIMIT 10 但这显示了前10行,而不是最后10行 编辑:我希望最后10行(是的,DESC会这样做),但我希望它们以升序返回。要颠倒顺序(因此获取最后10行而不

最好、最简单的方法是什么?我目前的查询是:

  SELECT * 
    FROM chat 
   WHERE (userID = $session AND toID = $friendID) 
      OR (userID = $friendID AND toID = $session) 
ORDER BY id 
   LIMIT 10
但这显示了前10行,而不是最后10行

编辑:我希望最后10行(是的,DESC会这样做),但我希望它们以升序返回。

要颠倒顺序(因此获取最后10行而不是前10行),请使用
DESC
而不是
ASC

编辑

根据您的评论:

SELECT * FROM (
  SELECT * 
  FROM chat 
  WHERE (userID = $session AND toID = $friendID) 
    OR (userID = $friendID AND toID = $session)  
  ORDER BY id DESC
  LIMIT 10
) AS `table` ORDER by id ASC

如果您想要最后10个,只需将ASC更改为DESC

SELECT * 
FROM 
chat 
WHERE 
(userID=$session AND toID=$friendID) 
OR 
(userID=$friendID AND toID=$session) 
ORDER BY id 
DESC
LIMIT 10
首先,我设定了限制

$limit = 10;
然后

 $total_rows = mysqli_num_rows($resource);
在这里,我计算了受影响的行的总数

$start = $total_rows-$limit;
然后从行数中减去限制以获取起始记录数

   $query_limit= $query." LIMIT $start,$limit";
然后将限制添加到查询中。 有关限制的更多信息,请参阅此链接
首先从表中选择最后10个,然后按升序重新排序

SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 10) sub ORDER BY id ASC

哎呀,我忘了在我的问题中包括最后10行(这是可以用DESC完成的,但按ASC顺序。我忘了在我的问题中包括最后10行(是用DESC),但按ASC顺序。我知道这是一篇老文章,但这正是我要找的。谢谢:)在数据库上使用排序选项。没有解释的代码转储很少有帮助。请为您的答案添加一些上下文。如果您有筛选器,这可能是一个问题。有些数据可能被忽略。@Chris还好吗。。。?我对这个问题没有多加解释answer@mohitesachin217,您添加了一些解释,但您在回答中使用了古老的
mysql.*
函数。如果您正在编写新代码,请不要使用
mysql.*
函数。它们是旧的、破损的,在PHP5.5中被弃用(它太旧了,甚至不再接收安全更新),在PHP7中被完全删除。使用或与准备好的语句和参数绑定一起使用。有关详细信息,请参阅。
SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 10) sub ORDER BY id ASC