SELECT * FROM table_name ORDER BY column_name?


SELECT * FROM table_name ORDER BY column_name?

好吧,所以我在新闻部分编码,每次插入新新闻时,它都会显示在旧新闻的下面。我想让它按id排序,但让它像倒退一样开始。我不知道如何解释,但是的我希望它们按id添加的最新id排序,所以如果插入的第一行的id是1,那么我希望它显示在下一个id下面。

所以id=2的行将在这里

所以id=1的行将在这里

这就是我想要的,而不是像这个

所以id=1的行将在这里

所以id=2的行将在这里

很抱歉我的错误解释,我希望这是可以理解的

这是我到目前为止的代码

<?php  
require("include/config.php");
$sqlnews = mysql_query("SELECT * FROM news ORDER BY id");
while($row = mysql_fetch_array($sqlnews)) {
    $dbdate = $row['date'];
    $dbnews = $row['news'];
    echo "<h1><strong>$dbdate</strong></h1>";
    echo "<div class='content'>$dbnews</div><br><br>";
}
?>

ORDER BY子句中添加DESC

SELECT * FROM news ORDER BY id DESC

默认情况下,它处于ASC模式。

SELECT * FROM news ORDER BY id DESC

DESC是降序关键字
ASC是升序

如果两者都不指定,则默认行为为递增

只需在sql查询中使用DESC关键字。

$sqlnews = mysql_query("SELECT * FROM news ORDER BY id DESC");

然而,使用id并不是一个好主意,因为从语义上讲,没有什么可以阻止某人更改自动分配id的顺序。

因此,您应该添加一列created_at。每次插入一行时,都可以使用SQL函数NOW()

优点是你可以说:

SELECT * FROM news WHERE created_at <= NOW() ORDER BY created_at DESC

这意味着你可以提前安排新闻项目,当日期/时间到达时,它会自动显示!

   $sqlnews = mysql_query("SELECT * FROM news ORDER BY id DESC");

试试这个:

只需要添加

order by id DESC

只需用以下代码替换您的代码:

<?php  
require("include/config.php");
$sqlnews = mysql_query("SELECT * FROM news ORDER BY id DESC");
while($row = mysql_fetch_array($sqlnews)) {
    $dbdate = $row['date'];
    $dbnews = $row['news'];
    echo "<h1><strong>$dbdate</strong></h1>";
    echo "<div class='content'>$dbnews</div><br><br>";
}
?>