[解決済み] mysqlの連番でギャップを見つけるには?
2022-06-24 05:11:32
質問
他のシステムから値をインポートしたテーブルを持つデータベースがあります。自動インクリメントの列があり、重複する値はありませんが、欠落した値があります。例えば、このクエリを実行する。
select count(id) from arrc_vouchers where id between 1 and 100
は100を返すべきですが、代わりに87を返します。不足している数値の値を返すようなクエリはありますか?例えば、id1-70と83-100のレコードは存在しても、idが71-82のレコードは存在しません。71、72、73などを返したいのですが。
このようなことは可能でしょうか?
どのように解決するのですか?
更新情報
ConfexianMJSの提供 より良い 答え 性能の面で
(最速ではない)答え
あらゆるサイズのテーブルで動作するバージョンです(100行だけではありません)。
SELECT (t1.id + 1) as gap_starts_at,
(SELECT MIN(t3.id) -1 FROM arrc_vouchers t3 WHERE t3.id > t1.id) as gap_ends_at
FROM arrc_vouchers t1
WHERE NOT EXISTS (SELECT t2.id FROM arrc_vouchers t2 WHERE t2.id = t1.id + 1)
HAVING gap_ends_at IS NOT NULL
-
gap_starts_at
- 現在のギャップの最初のID -
gap_ends_at
- 現在のギャップの最後の ID
関連
-
MySQL演算子(and, or, in, not)の具体的な使用方法
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] ある列に含まれる明確な値の数を求めるSQL
-
[解決済み】Oracleのテーブルで重複する値を見つけるにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
面接では選択式で聞かれましたが......。.for updateはテーブルをロックするか、行をロックするか?
-
MySQLインストールチュートリアル(Linux版
-
mysqlインデックスが長すぎる特殊なキーが長すぎる解決策
-
MySQL XAが分散型トランザクションを実装する方法を1記事にまとめました。
-
[解決済み] ユニークなテーブル/エイリアスではない
-
MySQLにおけるvarchar型とchar型の違い
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型