MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

別のテーブルの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)

  1. 別のテーブルの値を使用した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,&

  2. 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; これにより、次の出力が生成されます- 出力 + -------- + -