ServerIDや通し番号などの一意になる番号を持つテーブルの登録や削除を繰り返していると、欠番(歯抜けの番号)ができる場合があります。そんな時に客先の要望で、現時点での欠番(空き番号)の一覧が欲しいといわれることがあります。そこで今回は、SQLでIDなどの一意に付けられた番号を持つテーブルの欠番の一覧を取得する方法を紹介します。欠番の一覧を取得するサンプルのテーブルの作成と初期データを投入します。NUMBER_TABLE(NUMBER)VALUES(2),(4),(5),(8),(9),(10),(14),(15);テーブルに登録する番号は1~15までとします。上記のNUMBER_TABLEテーブルへのデータのインサートは、複数のレコードを1回のSQLで一括挿入する形式で記述しています。1回のINSERTで複数行のレコードをテーブルに一括で挿入する方法については、以下の記事を参照してください。1回のINSERT(インサートSQL)で複数行のレコードを一括挿入(追加)するSQLServerやMySQLなどのデータベースで、テーブルにレコードをINSERT文使用して追加するには、通常は以下のように記述します。...johobase.com連番データの取得まずは開始番号~終了番号までの連番を取得するSQLを作成します。Expression〕)を利用して取得します。以下にSQLServerでの連番を取得するSQLの例を示します。@END_NUMBER)SELECTNUMBER_VALUEFROMMISSING_NUMBER_TABLE;WITH句で共通テーブル式を利用して1からNUMBER_TABLEテーブルに登録されている最大のNUMBERの値(15)までの連番を取得します。前章の連番を取得するクエリを少し変更して、MISSING_NUMBER_TABLEのNUMBER_VALUEがNUMBER_TABLEテーブルに存在しないレコードのみ取得することで欠番の一覧が取得できます。NUMBER_VALUE);取得結果MySQLで取得MySQLでもWITH句(共通テーブル式)を利用すれば、SQLServerの場合と同様に欠番の一覧を取得することができます。NUMBER_VALUE);Oracleで取得OracleであればWITH句を利用しなくてもLEVEL擬似列を利用して連番のデータを取得することができます。Serverのテーブルに登録されているデータをもとに、INSERTスクリプトを作成するプログラムを作成します。[SQLServer]前回はSQLのUPDATEステートメントを使用して、テーブルのデータ(レコード)を更新する方法について紹介しました。データベ...記事を読むSQLServerでboolean型(True/Falseの真偽値)を扱うbit型SQLServerで真偽値を扱うためのデータ型について紹介します。Serverを使用していると、頻繁にクエリ(SQL文)を書くことがあります。[SQLServer]以前の記事では、SELECTステートメントを使用してデータベースのテーブルからデータを取得する方法を紹介しました。[SQLServer]SQLでデータを取得する際に、例えばセールスマンの売り上げ金額や学生の試験の得点に順位を付けたり、顧客ID順に連番を振りたい時があります。