データベーステーブルから最初に利用可能な識別子を見つける

ncatnow

要件は、識別子が次のような英数字の文字列である、最初に使用可能な識別子を見つけることです。

ABC10000
ABC10345
ABC88942
ABC90123

データベーステーブルの構造は次のとおりです。

id, user, identifier

アルファコンポーネントABCは全体を通して一貫しており、変更されないことに注意してください数値成分は10000から99999の間でなければなりません。

これに取り組む最善の方法は?過度に複雑な問題のようには見えません。MySQLのみ、またはSQLとPHPの組み合わせを使用した最も単純な解決策を探しています。現在のソリューションでは、各レコードをデータベースから配列にプルしてから、10000以降でループし、ABC可用性を付加してチェックします。これは大幅に改善される可能性があるようです。


編集:元の質問は、一定量の識別子がすでに割り当てられているという点で十分に明確ではありませんでした。私はギャップを埋めようとしています。私が提供した短いリストから、次に利用できるのはABC10001です。ただし、最終的にはABC10346、次にABC88943などになります。


編集:構造が不十分な質問でごめんなさい。これ以上の混乱を避けるために、実際のテーブル構造は次のとおりです。

CREATE TABLE IF NOT EXISTS `User_Loc` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` int(11) DEFAULT NULL,
  `value` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_64FB41DA17323CBC` (`user`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4028 ;
yunzen

テーブルを自己結合し、結合されたテーブルで最初のNULL値を探す必要があります

SELECT CONCAT('ABC', SUBSTRING(t1.value, 4)+1) AS next_value
FROM test t1
LEFT JOIN test t2 on SUBSTRING(t1.value, 4)+1 = SUBSTRING(t2.value, 4)
WHERE ISNULL(t2.value)
ORDER BY t1.value ASC
LIMIT 1

http://sqlfiddle.com/#!2/d69105/22


編集

ncatnowのいくつかの「専門分野」についてのコメント付き。なくしための副選択の助けを借りて行うため、わずかadjusmentsがあります'ABC'し、UNIONデフォルト値を持つためには、

SELECT 
  CONCAT('ABC', t1.value+1) AS next_value

FROM 
((SELECT '09999' AS value) UNION (SELECT SUBSTRING(value, 4) AS value FROM test)) t1
LEFT JOIN 
((SELECT '09999' AS value) UNION (SELECT SUBSTRING(value, 4) AS value FROM test)) t2 
  ON t1.value+1 = t2.value

WHERE 
  ISNULL(t2.value) 
  AND t1.value >= '09999'

ORDER BY t1.value ASC
LIMIT 1

http://sqlfiddle.com/#!2/28acf6/50

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

特定のデータベースからテーブルを識別する

分類Dev

PostgreSQLデータベースからいくつかのテーブルを見つけて削除する方法

分類Dev

デートスパンから利用可能な部屋を見つける

分類Dev

データベース内の1つのテーブルから、異なる列を持つ別のテーブルに特定の行を挿入します

分類Dev

異なるデータベースの2つのテーブルから別のテーブルに値を取得する

分類Dev

データベーステーブルから特定の値を見つけるための最も簡単で最適な方法は何ですか?

分類Dev

Kubernetesクラスターレベルで利用可能なリソースを見つける方法は?

分類Dev

任意のテーブルのデータベース名を見つける方法

分類Dev

Rails-ユーザーを作成し、別のモデルから次に利用可能なレコードを見つけます

分類Dev

データベースのあるテーブルから別のデータベースのテーブルにデータを転送する方法

分類Dev

ファイルからデータベースタイプを見つける

分類Dev

1つのデータベーステーブルから別のデータベースの2つの異なるテーブルに行を挿入する

分類Dev

大きなSQLServerテーブルをあるデータベースから別のデータベースに移動するための最良の方法は?

分類Dev

親テーブルから子テーブルセレクターを見つける-jQuery

分類Dev

Rでマージされたデータテーブルから余分な行を見つける

分類Dev

mysqlテーブルの調整データからEquatorを見つける

分類Dev

宣言されていない識別子データベーステーブルが認識されません

分類Dev

SQLで2つの外部キーを持つテーブルからデータを選択します-無効な識別子

分類Dev

同じテーブル内の別の行からデータを見つけるために、1つの行でSQLQUERYを複数検索する

分類Dev

同じ識別子を持つ2つのテーブル間の不一致を見つけるSQL

分類Dev

データベースが見つからないときに影響を受けたデータベースを見つけますか?

分類Dev

データを2つの異なるデータベーステーブルにスクレイピングすることは可能ですか?

分類Dev

SQLテーブルにないデータを見つける方法

分類Dev

異なるデータベーステーブルから1ページにデータを表示する方法

分類Dev

データベースからデータを見つける方法

分類Dev

データベースからデータの数を見つける

分類Dev

異なるデータベースの2つのテーブルである2つの異なるテーブルからデータを検索する

分類Dev

PostgreSQL:あるデータベーステーブルから別のデータベースにデータをコピーする方法

分類Dev

あるデータベースから別のデータベースにテーブルデータをコピーする

Related 関連記事

  1. 1

    特定のデータベースからテーブルを識別する

  2. 2

    PostgreSQLデータベースからいくつかのテーブルを見つけて削除する方法

  3. 3

    デートスパンから利用可能な部屋を見つける

  4. 4

    データベース内の1つのテーブルから、異なる列を持つ別のテーブルに特定の行を挿入します

  5. 5

    異なるデータベースの2つのテーブルから別のテーブルに値を取得する

  6. 6

    データベーステーブルから特定の値を見つけるための最も簡単で最適な方法は何ですか?

  7. 7

    Kubernetesクラスターレベルで利用可能なリソースを見つける方法は?

  8. 8

    任意のテーブルのデータベース名を見つける方法

  9. 9

    Rails-ユーザーを作成し、別のモデルから次に利用可能なレコードを見つけます

  10. 10

    データベースのあるテーブルから別のデータベースのテーブルにデータを転送する方法

  11. 11

    ファイルからデータベースタイプを見つける

  12. 12

    1つのデータベーステーブルから別のデータベースの2つの異なるテーブルに行を挿入する

  13. 13

    大きなSQLServerテーブルをあるデータベースから別のデータベースに移動するための最良の方法は?

  14. 14

    親テーブルから子テーブルセレクターを見つける-jQuery

  15. 15

    Rでマージされたデータテーブルから余分な行を見つける

  16. 16

    mysqlテーブルの調整データからEquatorを見つける

  17. 17

    宣言されていない識別子データベーステーブルが認識されません

  18. 18

    SQLで2つの外部キーを持つテーブルからデータを選択します-無効な識別子

  19. 19

    同じテーブル内の別の行からデータを見つけるために、1つの行でSQLQUERYを複数検索する

  20. 20

    同じ識別子を持つ2つのテーブル間の不一致を見つけるSQL

  21. 21

    データベースが見つからないときに影響を受けたデータベースを見つけますか?

  22. 22

    データを2つの異なるデータベーステーブルにスクレイピングすることは可能ですか?

  23. 23

    SQLテーブルにないデータを見つける方法

  24. 24

    異なるデータベーステーブルから1ページにデータを表示する方法

  25. 25

    データベースからデータを見つける方法

  26. 26

    データベースからデータの数を見つける

  27. 27

    異なるデータベースの2つのテーブルである2つの異なるテーブルからデータを検索する

  28. 28

    PostgreSQL:あるデータベーステーブルから別のデータベースにデータをコピーする方法

  29. 29

    あるデータベースから別のデータベースにテーブルデータをコピーする

ホットタグ

アーカイブ