Mysql テーブルで利用可能な最小 ID 値を照会する方法

Mysql テーブルで利用可能な最小 ID 値を照会する方法

今日、研究室のプロジェクトを見ていたとき、私にとって「難しい」問題に遭遇しました。実は、それは私があまりにも愚かだったからです。まずSQL文を捨てる

// このステートメントは、ID が 1 でない場合、正しいクエリ結果を取得できません。
存在しない oslist c から min(id+1) を選択します (id = c.id+1 である oslist から id を選択します);

このクエリ ステートメントを初めて見たとき、長い間 SQL に触れていなかったためか、完全に混乱しました。

1 存在する構文

SQL 構文では、exists を使用して結果をフィルタリングします。実際の実行プロセスでは、EXISTS ステートメントは外部テーブルをループし、ループが繰り返されるたびに内部テーブルをクエリします。外部テーブルのレコードをサブクエリに 1 つずつ代入します。サブクエリの結果セットが空の場合は、存在しないことを意味し、それ以外の場合は存在します。

ここで注意すべき点は、外部テーブルのレコードをサブクエリに代入するのは、実質的な値の比較を行うのではなく、クエリ結果が空かどうかを確認するためだけであるということです。

例を見てみましょう:

テーブル oslist の id が 1、2、3、4、5、6、7、8、9、10、11、14、15 の場合。ここでは、記事の冒頭にある SQL ステートメントを自己接続を使用して使用します。

クエリのプロセスは次のようになります。

id 1 を取得し、oslist に id = 2 があるかどうかを確認します。存在する場合は結果セットに含まれません。
id 2 を取得し、oslist に id = 3 があるかどうかを確認します。存在する場合は結果セットに含まれません。
id 3 を取得し、oslist に id = 4 があるかどうかを確認します。存在する場合は結果セットに含まれません。
id 4 を取得し、oslist に id = 5 があるかどうかを確認します。存在する場合は結果セットに含まれません。
ID 5 を取得し、oslist に ID = 6 があるかどうかを確認します。存在する場合は結果セットに含まれません。
ID 6 を取得し、oslist に ID = 7 があるかどうかを確認します。存在する場合は結果セットに含まれません。
ID 7 を取得し、oslist に ID = 8 があるかどうかを確認します。存在する場合は結果セットに含まれません。
ID 8 を取得し、oslist に ID = 9 があるかどうかを確認します。存在する場合は結果セットに含まれません。
ID 9 を取得し、oslist に ID = 10 があるかどうかを確認します。存在する場合は結果セットに含まれません。
ID 10 を取得し、oslist に ID = 11 があるかどうかを確認します。存在する場合は結果セットに含まれません。
ID 11 を取得し、oslist に ID = 12 があるかどうかを確認します。存在しない場合は結果セットに含まれます。
ID 14 を取得し、oslist に ID = 15 があるかどうかを確認します。存在する場合は結果セットに含まれません。
ID 15 を取得し、oslist に ID = 16 があるかどうかを確認します。存在しない場合は結果セットに含まれます。
(11+1) と (15+1) の間の最小値を取得し、結果を返します。

クエリを終了します。

ps: MySQL で最小の ID を持つデータを削除します

//方法1
 tablenamewhere id in (select id from (select min(id) id from tablenamec1) t1) から削除します。 
//方法2
テーブル名から削除、ID 昇順、制限 1 で並べ替え。

要約する

上記は私があなたに紹介した方法です。お役に立てれば幸いです。ご質問があれば、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • Mysql で ID の最大値、テーブル内のレコードの総数、その他の関連する問題を取得するための方法の概要
  • PHP で新しい MySql レコードの ID 値を取得する 3 つの方法
  • MySQLの自動増分IDの開始値を変更する方法
  • 最後に挿入された MySQL レコードの自動増分 ID 値を取得する 3 つの Java メソッド
  • MySQLのLAST_INSERT_IDを使用して、各サブテーブルの一意のID値を決定します。

<<:  JavaScriptはPromiseを使用して複数の繰り返しリクエストを処理します

>>:  Linux でハードディスクのサイズを確認し、ハードディスクをマウントする方法

推薦する

Angularデータバインディングとその実装の詳細な説明

目次序文データバインディングとは何ですか? Angular のデータバインディングの種類一方向データ...

Vue の計算プロパティ

目次1. 基本的な例2. 計算プロパティキャッシュとメソッド3. 計算プロパティセッター序文:通常、...

HTML にネストされた div の無効なマージンに対する解決策

div がネストされているときに margin が機能しない問題の解決策を次に示します。さて、マージ...

Docker+daocloudはフロントエンドプロジェクトの自動構築とデプロイを実現します

自動プロジェクト展開は大企業やユニコーン企業でよく使用され、手動でプロジェクトを展開するよりも効率的...

MySQL 8.0.22 のダウンロード、インストール、設定方法のグラフィックチュートリアル

参考までにMySQL 8.0.22をダウンロードしてインストールしてください。具体的な内容は次のとお...

MySQL 8.0.15 のインストールと設定方法のグラフィックチュートリアル (Win10 Home バージョン 64)

超初心者の私は、MySQL を学び始めたばかりで、インストール プロセス中に多くの問題に遭遇しました...

Docker 接続 MongoDB 実装プロセスとコード例

コンテナが起動した後まず管理者にログインして新しいユーザーを作成してください $ docker ex...

Vue.jsはシンプルな折りたたみパネルを実装します

この記事では、Vue.jsの具体的なコードを共有して、シンプルな折りたたみパネルを実装する例を紹介し...

読めばわかるVueの8つのヒント

1. v-forでは常に:keyを使用するデータを操作する必要があるときにプログラムを一定かつ予測可...

Hadoop 2.Xの新機能、ごみ箱機能の説明

ごみ箱機能をオンにすると、削除されたファイルの元のデータをタイムアウトなしで復元できるため、誤って削...

Linux 上の MySQL 5.7 でパスワードを忘れる問題を解決する

1. 問題Linux 上の mysql5.7 のパスワードを忘れました2. 解決策• ステップ 1:...

Typescript での infer キーワードの使用に関する詳細な理解

目次推測する事例:理解を深める参照する後で忘れないように、キーワード infer をメモしておきます...

Springboot および Vue プロジェクトの Docker デプロイメントの実装手順

目次A. SpringbootプロジェクトのDockerデプロイメント1. Springbootプロ...