1

例を見てみましょう:

id (auto_increment)   user
1                     John
2                     Mary
10                    Christopher

usersクエリに newを not used で強制的に追加するにはどうすればよいidsですか? :私たちの場合、3 から 9 まで:

4

2 に答える 2

2

挿入したいレコードの ID をテーブルの最初の「欠落している」ID 値に設定することで、少し巧妙な SQL でこれを行うことができます。

INSERT INTO myTable (id, user) 
VALUES 
(
   (SELECT MIN(mt2.id)+1 from myTable mt2 WHERE NOT EXISTS 
         (SELECT 'Y' from myTable mt3 where mt3.Id = mt2.id + 1)), 
   'New User Name'
)

DBMS によっては、1 つのクエリでこれを実行できない場合があります。このアプローチでは、Id 列を「自動生成」列にすることもほとんど役に立たなくなります。この挿入は、ID ジェネレーターが使用しようとするかどうかに関係なく、ID を持たない最小値を常に見つけます。テーブルに挿入する前に、ほとんど常に「ID 挿入」を有効にする必要があります。このテーブルの auto-gen 機能は使用されません。

于 2012-09-10T17:32:26.053 に答える
0

これはどうですか:

/*!40000 ALTER TABLE `mytable` DISABLE KEYS */;
INSERT INTO `mytable` (`id`,`col1`) VALUES (1,'mydata');
/*!40000 ALTER TABLE `mytable` ENABLE KEYS */;

もっと単純な IMO です。MySQL 管理 GUI ツールによって生成されます。

于 2013-05-27T07:15:39.697 に答える