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

时间:2013-03-28 14:31:54

标签: php mysql database

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

首先插入查询,例如,插入3篇文章主题:

id        article
 1        firstNews
 2        secondNews
 3        thirdNews

然后,当我下一次运行Cron作业来检查新文章时,例如出现两篇新文章,我希望这两篇新文章位于表格的开头,如下所示:

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

希望有道理。这可能是一个糟糕的方法,我想我可以有一个插入日期()的列,然后获取数据OrderBy日期,但它必须是一个更简单的方法来做到这一点。我认为从表中输出最新数据是最容易的......

如果我做ORDER BY DESC,它会在NewArticle1之前输出NewArticle2,这会破坏目的......

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

所以通过DESC,id 5将是第一个输出......我真的希望有一种解决方法......

4 个答案:

答案 0 :(得分:4)

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

SELECT * FROM articles ORDER BY id DESC;

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

答案 1 :(得分:0)

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

在适当的位置更改PK并不是一个好主意。尤其是,您可能使用该PK并且可能还有历史表

请注意,SQL表没有隐式顺序:您始终需要ORDER BY来保证结果集顺序

答案 2 :(得分:0)

您应该添加另一个专门用于排序的列,例如一个约会。并在其上添加INDEX

然后查询变为:

SELECT * 
FROM news
ORDER BY newsdate DESC

最新消息首先出现

如果有两个新闻项目可以在同一时间发布,您可能希望包含次要排序:

ORDER BY newsdate DESC, id ASC

答案 3 :(得分:0)

根本不应该关注你。

无论如何,

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

意味着每个数据库行都永远坚持它的id。虽然您希望将“唯一”ID分配给每个新闻,但这没有任何意义。

因此,只需拥有通常的自动增量ID,然后使用ORDER BY id DESC选择它以获得最新的条目。