Php 更新mysql,新数据从唯一id 1开始

Php 更新mysql,新数据从唯一id 1开始,php,mysql,database,Php,Mysql,Database,我想知道如何用新数据更新我的数据库表,但最新数据位于顶部,唯一id从1开始。我的意思是: 例如,第一个插入查询插入3个文章主题: id article 1 firstNews 2 secondNews 3 thirdNews 然后,下次运行Cron作业检查新项目时,例如,出现两个新项目,我希望这两个新项目位于表的开头,如下所示: id article 1 NewArticle1 2 Ne

我想知道如何用新数据更新我的数据库表,但最新数据位于顶部,唯一id从1开始。我的意思是:

例如,第一个插入查询插入3个文章主题:

id        article
 1        firstNews
 2        secondNews
 3        thirdNews
然后,下次运行Cron作业检查新项目时,例如,出现两个新项目,我希望这两个新项目位于表的开头,如下所示:

id        article
 1        NewArticle1
 2        NewArticle2
 3        firstNews
 4        secondNews
 5        thirdNews
希望这是有道理的。这可能是一种不好的方法,我想我可以用insert date()创建一个列,然后按OrderBy date获取数据,但这必须是一种更简单的方法。我认为这是从表中输出最新数据的最简单方法

如果我按DESC进行排序,它将在NewArticle1之前输出NewArticle2,这将无法实现此目的

id       article
 1       firstNews
 2       secondNews
 3       thirdNews
 4       NewArticle1
 5       NewArticle2

所以根据描述,ID5将是第一个输出…我真的希望有办法解决这个问题…

你永远不应该这样做。只需在末尾插入,要获取最新文章,请使用查询:

SELECT * FROM articles ORDER BY id DESC;

通常情况下:不要使数据适合您的查询,而是使查询适合您的数据。id不是位置或数字,它唯一地标识该行数据。

您永远不应该这样做。只需在末尾插入,要获取最新文章,请使用查询:

SELECT * FROM articles ORDER BY id DESC;

通常情况下:不要使数据适合您的查询,而是使查询适合您的数据。id不是位置或数字,它唯一地标识该行数据。

您可以使用日期列并对其进行排序。或者按ID降序排序

在适当的位置更改PK很少是个好主意。不仅如此,您可能有使用该PK的子表,也可能有历史表


请注意,SQL表没有隐含的顺序:您总是需要一个order BY来保证结果集的顺序,您可以使用日期列并对其进行排序。或者按ID降序排序

在适当的位置更改PK很少是个好主意。不仅如此,您可能有使用该PK的子表,也可能有历史表


请注意,SQL表没有隐含的顺序:您始终需要一个order BY来保证结果集的顺序。您应该添加另一个专门用于排序的列,例如日期。并在其上添加一个
索引

然后查询变成:

SELECT * 
FROM news
ORDER BY newsdate DESC
最新消息先行

如果有两条新闻可以同时发布,您可能希望包含第二类:

ORDER BY newsdate DESC, id ASC

您应该添加另一个专门用于排序的列,例如日期。并在其上添加一个
索引

然后查询变成:

SELECT * 
FROM news
ORDER BY newsdate DESC
最新消息先行

如果有两条新闻可以同时发布,您可能希望包含第二类:

ORDER BY newsdate DESC, id ASC

这根本不应该是你关心的

ID不是一个数字,也不是一个位置。它只是一个唯一标识符

意味着每一个数据库行都将永远保留其id。当你想为每一条新消息分配你的“唯一”id时,这是没有意义的


因此,只需使用通常的自动递增id,并使用“按id顺序描述”选择它,就可以首先获得最新的条目。

您不必担心它

ID不是一个数字,也不是一个位置。它只是一个唯一标识符

意味着每一个数据库行都将永远保留其id。当你想为每一条新消息分配你的“唯一”id时,这是没有意义的


因此,只需使用常用的自动递增id,并使用
按id排序说明
选择它,即可首先获得最新的条目。

更改id是一个坏主意(例如,您将无法轻松链接到您的某篇文章)、大量工作(对于您和数据库)和不必要的工作(您只需执行
按id排序说明
)。重新排列表主索引不是一个选项。例如,当使用URL
news.php?p=id=2
时,每天会产生不同的新闻条目。只需根据降序id对结果进行排序。更改id是一个坏主意(例如,您将无法轻松链接到您的某篇文章)、大量工作(对于您和数据库)和不必要的工作(您只需执行
ORDER BY id DESC
)。重新排列表主索引不是一个选项。例如,当使用URL
news.php?p=id=2
时,每天会产生不同的新闻条目。只需根据递减id对结果进行排序。如果我这样做,则NewArticle1的id为4,NewArticle2的id为5。如果我按DESC排序,NewArticle2将位于NewArticle1之前,因此这不是最新的…刷新结果时,首先将所有项目保存在一个数组中(ORDER Newsitem1,Newsitem2),然后使用array_reverse()反转顺序。循环反向数组,Newsitem 2将插入Newsitem 1之前,从而为您提供所需的结果。我非常喜欢这种想法,即反转数组中的顺序,然后插入DB。应该给我最新的项目是最后一个id。谢谢你的建议!如果我这样做,那么NewArticle1的id为4,NewArticle2的id为5。如果我按DESC排序,NewArticle2将位于NewArticle1之前,因此这不是最新的…刷新结果时,首先将所有项目保存在一个数组中(ORDER Newsitem1,Newsitem2),然后使用array_reverse()反转顺序。循环反向数组,Newsitem 2将插入Newsitem 1之前,从而为您提供所需的结果。我非常喜欢这种想法,即反转数组中的顺序,然后插入DB。应该给我最新的项目是最后一个id。谢谢你的建议!