別のテーブルのMAX値を使用してMySQLAutoIncrementをリセットするにはどうすればよいですか?
prepareステートメントを使用して、別のテーブルのMAX値を使用してMySQLAutoIncrementをリセットできます。
構文は次のとおりです-
set @anyVariableName1=(select MAX(yourColumnName) from yourTableName1); SET @anyVariableName2 = CONCAT('ALTER TABLE yourTableName2 AUTO_INCREMENT=', @anyVariableName1); PREPARE yourStatementName FROM @anyVariableName2; execute yourStatementName;
上記の構文は、別のテーブルの最大値を使用してMySQLauto_incrementをリセットします。上記の構文を理解するために、2つのテーブルを作成しましょう。最初のテーブルにはレコードが含まれ、2番目のテーブルは最初のテーブルの最大値を使用してauto_incrementプロパティに使用します。
テーブルを作成するためのクエリは次のとおりです-
mysql> create table FirstTableMaxValue -> ( -> MaxNumber int -> ); Query OK, 0 rows affected (0.64 sec)
挿入コマンドを使用して、テーブルからレコードを挿入します。クエリは次のとおりです-
mysql> insert into FirstTableMaxValue values(100); Query OK, 1 row affected (0.15 sec) mysql> insert into FirstTableMaxValue values(1000); Query OK, 1 row affected (0.19 sec) mysql> insert into FirstTableMaxValue values(2000); Query OK, 1 row affected (0.12 sec) mysql> insert into FirstTableMaxValue values(90); Query OK, 1 row affected (0.15 sec) mysql> insert into FirstTableMaxValue values(2500); Query OK, 1 row affected (0.17 sec) mysql> insert into FirstTableMaxValue values(2300); Query OK, 1 row affected (0.12 sec)
selectステートメントを使用して、テーブルのすべてのレコードを表示します。
クエリは次のとおりです-
mysql> select *from FirstTableMaxValue;
出力
+-----------+ | MaxNumber | +-----------+ | 100 | | 1000 | | 2000 | | 90 | | 2500 | | 2300 | +-----------+ 6 rows in set (0.05 sec)
これで、2番目のテーブルを作成できます。 2番目のテーブルを作成するためのクエリは次のとおりです-
mysql> create table AutoIncrementWithMaxValueFromTable -> ( -> ProductId int not null auto_increment, -> Primary key(ProductId) -> ); Query OK, 0 rows affected (1.01 sec)
ここでは、最初のテーブルから最大値を取得し、2番目のテーブルのauto_incrementプロパティに最大値を設定するステートメントを含めます。クエリは次のとおりです-
mysql> set @v=(select MAX(MaxNumber) from FirstTableMaxValue); Query OK, 0 rows affected (0.00 sec) mysql> SET @Value2 = CONCAT('ALTER TABLE AutoIncrementWithMaxValueFromTable AUTO_INCREMENT=', @v); Query OK, 0 rows affected (0.00 sec) mysql> PREPARE myStatement FROM @value2; Query OK, 0 rows affected (0.29 sec) Statement prepared mysql> execute myStatement; Query OK, 0 rows affected (0.38 sec) Records: 0 Duplicates: 0 Warnings: 0
これで、最初のテーブルから2番目のテーブルに2500という最大値を追加しました。これで、2500、2501などから始まるテーブルにレコードを挿入できます。
2番目のテーブルにレコードを挿入するクエリは次のとおりです-
mysql> insert into AutoIncrementWithMaxValueFromTable values(); Query OK, 1 row affected (0.24 sec) mysql> insert into AutoIncrementWithMaxValueFromTable values(); Query OK, 1 row affected (0.10 sec)
selectコマンドを使用して、テーブルからすべてのレコードを確認します。クエリは次のとおりです-
mysql> select *from AutoIncrementWithMaxValueFromTable;
出力
+-----------+ | ProductId | +-----------+ | 2500 | | 2501 | +-----------+ 2 rows in set (0.00 sec)
-
別のテーブルの値を使用したINSERTINTOのMySQLクエリ?
これには、INSERTINTOSELECTステートメントを使用します。 テーブルを作成しましょう- 例 mysql> create table demo82 -> ( -> id int, -> name varchar(20) -> ); Query OK, 0 rows affected (2.06 挿入コマンド-を使用して、いくつかのレコードをテーブルに挿入します。 例 mysql> insert into demo82 values(100,&
-
MySQLデータベースの別のテーブルからIDを使用してユーザー名を取得するにはどうすればよいですか?
2つのテーブルからIDを使用してユーザー名を取得するには、JOINを使用してテーブルを結合する必要があります。 テーブルを作成しましょう- 例 ); Query OK、0行が影響を受けます(2.63 挿入コマンド-を使用して、いくつかのレコードをテーブルに挿入します。 例 insert into demo77 values(2、Bob); Query OK、1行が影響を受ける(0.36 selectステートメントを使用してテーブルのレコードを表示する- 例 select * from demo77; これにより、次の出力が生成されます- 出力 + -------- + -