1

データベース テーブルを新しいデータで更新する方法を知りたいのですが、最新のデータが 1 から始まる一意の ID で一番上にあるようにします。これが意味することです。

たとえば、最初の挿入クエリは、3 つの記事のトピックを挿入します。

id        article
 1        firstNews
 2        secondNews
 3        thirdNews

次に Cron ジョブを実行して新しい記事を確認するとき、たとえば 2 つの新しい記事が表示された場合、次のように 2 つの新しい記事をテーブルの先頭に配置します。

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

それが理にかなっていることを願っています。これは悪い方法かもしれません。insert date() を使用して列を作成し、OrderBy 日付でデータを取得できると思いますが、これを行うにはもっと簡単な方法である必要があります。テーブルから最新のデータを出力するには、これが最も簡単だと思います...

ORDER BY DESC を実行すると、NewArticle1 の前に NewArticle2 が出力され、目的が果たせなくなります...

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

したがって、DESCによって、id 5が最初の出力になります...これを回避する方法があることを本当に望んでいました...

4

4 に答える 4

4

これは絶対にしないでください。最後に挿入するだけで、最新の記事を取得するには、クエリを使用します。

SELECT * FROM articles ORDER BY id DESC;

一般に、データをクエリに合わせないでください。クエリをデータに合わせてください。id は位置や数値ではなく、そのデータ行を一意に識別します。

于 2013-03-28T14:33:21.480 に答える
0

日付列を使用して、それを並べ替えることができます。または、ID の降順で並べ替えます。

その場で PK を変更することが良い考えであることはめったにありません。少なくとも、そのPKを使用する子テーブルがあり、おそらく履歴テーブルもある

SQL テーブルには暗黙的な順序がないことに注意してください。結果セットの順序を保証するには、常に ORDER BY が必要です。

于 2013-03-28T14:34:34.367 に答える
0

それはあなたの心配ではありません。

IDは数字でも位置でもありません。これは単なる一意の識別子です。

すべてのデータベース行がその ID に永久に固執することを意味します。新しいニュースごとに「一意の」IDを割り当てたいのですが、これは意味がありません。

そのため、通常の自動インクリメント ID を使用ORDER BY id DESCして選択し、最新のエントリを最初に取得します。

于 2013-03-28T14:50:58.120 に答える
0

日付など、ソート専用の別の列を追加する必要があります。を追加INDEXします。

次に、クエリは次のようになります。

SELECT * 
FROM news
ORDER BY newsdate DESC

最新のニュースが最初に来ます

まったく同時に投稿できるニュース項目が 2 つある場合は、2 番目の並べ替えを含めることができます。

ORDER BY newsdate DESC, id ASC
于 2013-03-28T14:42:01.927 に答える