Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL ऑटो इन्क्रीमेंट को दूसरी टेबल के MAX मान का उपयोग करके कैसे रीसेट करें?


आप किसी अन्य टेबल से MAX मान का उपयोग करके MySQL ऑटो इन्क्रीमेंट को रीसेट करने के लिए प्रिपेयर्ड स्टेटमेंट का उपयोग कर सकते हैं।

निम्नलिखित सिंटैक्स है:

SET @anyVariableName1 = (SELECT MAX(yourColumnName) FROM yourTableName1);
SET @anyVariableName2 = CONCAT('ALTER TABLE yourTableName2 AUTO_INCREMENT=', @anyVariableName1);
PREPARE yourStatementName FROM @anyVariableName2;
EXECUTE yourStatementName;

उपरोक्त सिंटैक्स किसी अन्य टेबल से अधिकतम मान का उपयोग करके MySQL ऑटो_इन्क्रीमेंट को रीसेट करेगा। उपरोक्त सिंटैक्स को समझने के लिए, दो टेबल बनाते हैं। पहली टेबल में रिकॉर्ड होंगे और दूसरी टेबल पहली टेबल से अधिकतम मान का उपयोग करेगी और ऑटो_इन्क्रीमेंट प्रॉपर्टी के लिए उपयोग करेगी।

टेबल बनाने का क्वेरी:

mysql> CREATE TABLE FirstTableMaxValue (
    -> MaxNumber INT
    -> ); Query OK, 0 rows affected (0.64 sec)

INSERT कमांड का उपयोग करके टेबल से रिकॉर्ड डालें:

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)

अब आप दूसरी टेबल बना सकते हैं। दूसरी टेबल बनाने का क्वेरी:

mysql> CREATE TABLE AutoIncrementWithMaxValueFromTable (
    -> ProductId INT NOT NULL AUTO_INCREMENT,
    -> PRIMARY KEY(ProductId)
    -> ); Query OK, 0 rows affected (1.01 sec)

यहाँ मैं एक स्टेटमेंट शामिल करने जा रहा हूं जो पहली टेबल से अधिकतम मान प्राप्त करेगा और दूसरी टेबल के लिए ऑटो_इन्क्रीमेंट प्रॉपर्टी के लिए अधिकतम मान सेट करेगा। क्वेरी इस प्रकार है:

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

अब हमने पहली टेबल से अधिकतम मान जो 2500 है, उसे दूसरी टेबल में जोड़ा है। अब आप टेबल में रिकॉर्ड डाल सकते हैं जो 2500, 2501 से शुरू होता है।

दूसरी टेबल में रिकॉर्ड डालने का क्वेरी:

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. - MySQL में INSERT INTO SELECT से दूसरी टेबल के स्ट्रिंग मान लेकर नई पंक्ति जोड़ें

    INSERT INTO SELECT सिंटैक्स insert into targetTable(columnName) select sourceColumn from sourceTable where condition; उदाहरण insert into demo62(employee_name) select name from demo61 where id=2; परिणाम +-------------+---------------+ | employee_id | employee_name | +-------------+---------------

  1. - MySQL में INSERT INTO SELECT से दूसरी टेबल के मान लेकर नई टेबल भरें

    सिंटैक्स insert into targetTable(col1, col2) select sourceCol1, sourceCol2 from sourceTable where condition; उदाहरण insert into demo83(id,username) select id,name from demo82 where id=101; परिणाम +------+----------+ | id | username | +------+----------+ | 101 | Bob | | 101 | David |

  1. - MySQL में JOIN से दूसरी टेबल के ID द्वारा उपयोगकर्ता नाम कैसे प्राप्त करें?

    JOIN सिंटैक्स select username from table1 join table2 on table1.id = table2.fk_id; उदाहरण टेबल 1 (demo77): userid (PK), username insert into demo77 values(1,John), (2,Bob), (3,Mike); टेबल 2 (demo78): id (PK, FK→demo77), countryname insert into demo78 values(1,US), (2,AUS); JOIN क्वेरी और परिणा