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 でハードディスクのサイズを確認し、ハードディスクをマウントする方法

推薦する

MySQL で JSON 形式のフィールドをクエリする詳細な説明

作業開発プロセス中に、顧客の名前、携帯電話番号、ID カード、およびドキュメントの種類を動的に保存す...

WeChatアプレットはシンプルな計算機を実装する

参考までにWeChatアプレットで書かれた簡単な計算機です。具体的な内容は次のとおりです。 jisa...

HTML ウェブページのブラウザタイトルバーに小さなアイコンを表示する方法

この効果と同様に、方法も非常に簡単です。ヘッダーに次のように記述します: <link rel=...

CSS 配送先住所平行四辺形線スタイルの例コード

コードは次のようになります。 // 配送先住所の平行四辺形の線のスタイル <view clas...

LinuxシステムでのSystemC環境設定方法

以下はcentos7での設定方法ですsystemc ソース パッケージをダウンロード: System...

HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...

MySQL の従来のソート、カスタム ソート、中国語のピンイン文字によるソート

MySQL の通常のソート、カスタム ソート、中国語のピンイン文字によるソート。実際の SQL を記...

HTMLタグIDは変数にできる

<table id=" <%=var1%>">、var1...

フロントエンドコンポーネント化の基礎知識を詳しく解説

目次コンポーネントの基本概念オブジェクトとコンポーネントの違い成分属性属性とプロパティ属性:財産:ク...

HTMLは無効なテーブル幅設定の問題を解決します

テーブルに table-layer:fixed スタイルを設定し、テーブル内の行が結合されていること...

デザイン協会: なぜ間違った場所を探したのですか?

数日前、バスで仕事に行きました。バスのカードリーダーの実際の使用シーンを実際に見て、カードリーダーの...

カルーセル例の JavaScript 実装

この記事では、カルーセルの効果を実現するためのJavaScriptの具体的なコードを参考までに共有し...

CSS3のtransform属性で実装される4つの機能

CSS3 では、transform 関数を使用して、テキストや画像の回転、拡大縮小、傾斜、移動という...

スタートアップ企業が丹念に作り上げた優れたウェブデザイン17選

スタートアップ企業は、型破りな仕事のやり方、ユニークなビジネスモデル、特徴的な製品やサービス、パーソ...

DockerでEurekaを設定する方法

ユーレカ: 1. JDKイメージを構築するEurekaコンテナを起動するjdkフォルダと必要なファイ...