Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL आप सुरक्षित अपडेट मोड का उपयोग कर रहे हैं और आपने WHERE के बिना तालिका को अपडेट करने का प्रयास किया है

ऐसा लगता है कि MySQL 5.6 UPDATE executing को क्रियान्वित करने के बारे में सीमित है JOIN . के साथ स्टेटमेंट

तो, के बजाय

UPDATE table1 a
INNER JOIN table2 asa
ON a.ID = asa.Table1Id
SET a.ReferenceID = asa.ReferenceID
WHERE a.ID > 0 AND asa.ID > 0

आपको जितने आवश्यक हो उतने प्रश्न लिखने होंगे जैसे:

UPDATE table1 a
SET a.ReferenceID = <The corresponding value in table 2>
WHERE a.ID = <The corresponding ID>

यह टाइप करने के लिए बहुत कष्टप्रद है, कोई व्यक्ति अद्यतन क्वेरी बनाने के लिए गतिशील SQL का उपयोग कर सकता है:

SELECT CONCAT('UPDATE table1 a SET a.ReferenceID = ', asa.ReferenceID, ' WHERE a.ID = ', t.ID, ';')
FROM table1 t
INNER JOIN table2 asa
ON t.ID = asa.Table1Id;

उदाहरण के लिए:

स्कीमा (MySQL v5.6)

CREATE TABLE test
(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    foo VARCHAR(255)
);

CREATE TABLE test2
(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    id_test INT NOT NULL,
    foo VARCHAR(255),
    FOREIGN KEY (id_test) REFERENCES test(id)
);

INSERT INTO test (foo) VALUES ('hello'), ('world');

INSERT INTO test2 (id_test, foo) VALUES (1, 'bar'), (2, 'baz');

क्वेरी #1

SELECT CONCAT('UPDATE test t SET t.foo = ''', t2.foo, ''' WHERE t.id = ', t.id, ';') AS 'sql query'
FROM test t
INNER JOIN test2 t2
ON t.id = t2.id_test;

यह आउटपुट :

UPDATE test t SET t.foo = 'bar' WHERE t.id = 1;
UPDATE test t SET t.foo = 'baz' WHERE t.id = 2;

आउटपुट का उपयोग अब मैन्युअल रूप से . के लिए किया जा सकता है अलग-अलग पंक्तियों को अपडेट करें

डीबी फिडल पर देखें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. xampp की स्थापना रद्द करने के बाद phpmyadmin में डेटाबेस को कैसे पुनर्स्थापित करें?

  2. MySQL में LIMIT के साथ LEFT JOIN का उपयोग करके DELETE करें

  3. MySQL कई स्तंभों का चयन करें

  4. mysql से jdbc के बीच कनेक्ट करने के लिए क्लासपाथ सेट करें

  5. ऑटो वेतन वृद्धि आरंभिक संख्या बदलें?