我想知道如何使用新数据更新我的数据库表,但最新数据位于顶部,唯一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将是第一个输出......我真的希望有一种解决方法......
答案 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
选择它以获得最新的条目。