MySQL では、ソートには order by を、ページングには limit をよく使用します。最初にソートしてからページングする必要がある場合は、select * from table name order by sort field limt M,N という同様の式をよく使用します。しかし、この書き方には、より深い使用上の落とし穴が隠れています。並べ替えフィールドに重複データがある場合、並べ替え結果が期待と一致しなくなる可能性が高くなります。 最初のページと最後のページをクエリする場合: 解決: SELECT * FROM purchaseinfo ORDER BY actiontime,id LIMIT 0,2; 上記の実際の実行結果から、現実と想像の間にはギャップがあることが多いことが証明されました。実際の SQL 実行は、上記のようには実行されません。実際、MySQL はここで Limit を最適化します。具体的な最適化方法については、公式ドキュメントを参照してください: https://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html /* Navicat MySQLデータ転送 ソースサーバー: ローカル mysql8.0 ソース サーバー バージョン: 80018 ソースホスト: localhost:3308 ソースデータベース: baihe ターゲットサーバータイプ: MYSQL ターゲット サーバー バージョン: 80018 ファイルエンコーディング: 65001 日付: 2020-06-09 14:47:37 */ FOREIGN_KEY_CHECKS=0 に設定します。 -- ---------------------------- -- 購入情報のテーブル構造 -- ---------------------------- `purchaseinfo` が存在する場合はテーブルを削除します。 テーブル「purchaseinfo」を作成します( `id` int(11) NOT NULL AUTO_INCREMENT, `userId` int(11) デフォルト '0', `inout` varchar(1) 文字セット utf8mb4 COLLATE utf8mb4_0900_ai_ci デフォルト NULL, `money` int(11) デフォルト NULL, `actiontime` datetime デフォルト NULL コメント 'jiaoyi', 主キー (`id`)、 キー `UserId` (`userId`) ) ENGINE=InnoDB AUTO_INCREMENT=17 デフォルト CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- 購入記録情報 -- ---------------------------- `purchaseinfo` に値 ('7'、'1'、'I'、'10000'、'2020-06-09 18:05:41') を挿入します。 `purchaseinfo` に値 ('8'、'7788'、'O'、'20000'、'2020-06-09 18:05:15') を挿入します。 `purchaseinfo` に値 ('9'、'7788'、'I'、'20000'、'2020-06-09 18:05:15') を挿入します。 `purchaseinfo` に値 ('10'、'7788'、'O'、'50000'、'2020-06-09 18:05:15') を挿入します。 `purchaseinfo` に値 ('11'、'1'、'O'、'50000'、'2020-06-09 18:05:15') を挿入します。 `purchaseinfo` に値 ('12'、'1'、'O'、'50000'、'2020-06-09 18:05:15') を挿入します。 `purchaseinfo` に値 ('13'、'1'、'O'、'50000'、'2020-06-09 18:05:15') を挿入します。 `purchaseinfo` に値 ('14'、'1'、'O'、'50000'、'2020-06-09 18:05:15') を挿入します。 `purchaseinfo` に値 ('15'、'1'、'O'、'50000'、'2020-06-09 18:05:15') を挿入します。 `purchaseinfo` に値 ('16'、'1'、'O'、'50000'、'2020-06-09 18:05:15') を挿入します。 これで、MySQL の order by と limit を混在させる際の落とし穴に関するこの記事は終わりです。MySQL の order by と limit を混在させる方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Azure Container Registry を使用してイメージを保存する際の問題
>>: Vue プロジェクトの最初の画面のパフォーマンス最適化コンポーネントの実践ガイド
簡単です。チュートリアルを見てください。ブロガー1. まずdockerを起動するサービスdocker...
昨日、1年間使用していた Alibaba Cloud サーバーを購入しました。システムは Linux...
MySQL は次の 3 種類のコメントをサポートしています。 1. 行末の「#」文字から。 2. 「...
MySQLマルチインスタンスとは簡単に言うと、MySQL マルチインスタンスとは、サーバー上で複数の...
初めて MySQL FUNCTION を書いたとき、エラーが何度も発生しました。 Err] 1064...
目次ベース戻り値の型文字列とブール値数値とbigintシンボル未定義関数物体他のよくある質問参照エラ...
1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...
タブ: カテゴリ + 説明タグバー: カテゴリ => ユーザーに現在地と目的地を知らせる1. ...
この記事の例では、円形のプログレスバーのドラッグアンドスライドを実現するための具体的なJSコードを紹...
質問:最近、プロジェクトを展開すると文字化けしたデータが出てきました。確認したところ、プロジェクトは...
次のコードは、Chrome による Cookie の変更の監視を導入しています。コードは次のとおりで...
01. コマンドの概要tr コマンドは、標準入力からの文字を置換、圧縮、削除できます。ある文字セット...
Vite とは何ですか? (フロントエンドの新しいおもちゃです) Vite は、ネイティブ ES モ...
ビュー: MySQL のビューはテーブルと多くの類似点があります。ビューも複数のフィールドと複数のレ...
VM Ware 仮想マシン CentOS の時刻は、次の図に示すように、現地時間と一致しません。おそ...