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

mysql एकाधिक प्राथमिक कुंजी के साथ क्वेरी बदलें

इससे कोई फर्क नहीं पड़ना चाहिए, यह वही वाक्यविन्यास है। बस सुनिश्चित करें कि आपके पास कॉलम के रूप में निर्दिष्ट दोनों कुंजियाँ हैं। उदाहरण के लिए:

REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` /* , ... */ )
  VALUES ( 'widgets', 14, 'Blue widget with purple trim' );

संपादित करें

यह सुनिश्चित करने के लिए कि मैं आपके डेटा को नष्ट करने वाला नहीं था, यह मेरा परीक्षण है जो मैंने अपने परीक्षण डेटाबेस में चलाया था। निःसंदेह, यदि आप सुनिश्चित नहीं हैं, तो मैं आपको इसे आज़माने के लिए प्रोत्साहित करता हूँ!

CREATE SCHEMA `my_testdb`;
USE `my_testdb`;
CREATE TABLE `my_table` (
  `key1` VARCHAR(20) NOT NULL,
  `key2` INTEGER NOT NULL,
  `othercolumn1` VARCHAR(50),
  CONSTRAINT PRIMARY KEY (`key1`, `key2`) );
REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` )
  VALUES ( 'widgets', 14, 'Green widget with fuchsia trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` )
  VALUES ( 'widgets', 15, 'Yellow widget with orange trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` )
  VALUES ( 'thingamabobs', 14, 'Red widget with brown trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` )
  VALUES ( 'widgets', 14, 'Blue widget with purple trim' );
SELECT * FROM `my_table`;

यह मेरा परिणाम है:

key1          key2  othercolumn1
widgets       14    Blue widget with purple trim
widgets       15    Yellow widget with orange trim
thingamabobs  14    Red widget with brown trim

एक अन्य संपादन

मुझे लगता है कि मैं देख रहा हूं कि आप दस्तावेज़ीकरण में किस बारे में बात कर रहे हैं, अद्वितीय कॉलम पर भ्रम:

यह एक ऐसी आकस्मिक परिस्थिति की बात कर रहा है जिसमें आप जिस पंक्ति को प्रतिस्थापित कर रहे हैं, वह न केवल मौजूदा प्राथमिक कुंजी के साथ, बल्कि अन्य अद्वितीय स्तंभों के साथ भी विरोध करती है। इस बिंदु को स्पष्ट करने के लिए यहां एक और उदाहरण दिया गया है:

CREATE SCHEMA `my_testdb2`;
USE `my_testdb2`;
CREATE TABLE `my_table` (
  `key1` VARCHAR(20) NOT NULL,
  `key2` INTEGER NOT NULL,
  `color` VARCHAR(20) NOT NULL UNIQUE,
  `othercolumn1` VARCHAR(50),
  CONSTRAINT PRIMARY KEY (`key1`, `key2`) );
REPLACE INTO `my_table` ( `key1`, `key2`, `color`, `othercolumn1` )
  VALUES ( 'widgets', 14, 'green', 'Green widget with fuchsia trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `color`, `othercolumn1` )
  VALUES ( 'widgets', 15, 'yellow', 'Yellow widget with orange trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `color`, `othercolumn1` )
  VALUES ( 'thingamabobs', 14, 'red', 'Red widget with brown trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `color`, `othercolumn1` )
  VALUES ( 'widgets', 14, 'yellow', 'Yellow widget with purple trim' );
SELECT * FROM `my_table`;

ध्यान दें कि कैसे अंतिम REPLACE ऑपरेशन न केवल (key1 .) के साथ विरोध करता है , key2 ) पहली जगह की प्राथमिक कुंजी, लेकिन दूसरे के अनूठे रंग के साथ भी। इस स्थिति में, अंतिम REPLACE ऑपरेशन करने से पहले दोनों पंक्तियों को हटा दिया जाता है ताकि परिणाम में कोई विरोध न हो। आपके पास केवल दो पंक्तियाँ होंगी:

key1          key2  color   othercolumn1
widgets       14    yellow  Yellow widget with purple trim
thingamabobs  14    red     Red widget with brown trim

दोनों पंक्तियों के साथ (key1 , key2 ) बराबर ('विजेट', 14) और 'पीले' रंग वाली पंक्ति नई पंक्ति के कारण टेबल पर कई अद्वितीय बाधाओं के साथ परस्पर विरोधी होने के कारण उड़ गई थी।

आशा है कि यह मदद करता है!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CodeIgniter के भीतर एकाधिक डेटाबेस का उपयोग करना

  2. Mysql के त्रुटि संदेशों के लिए एक नई भाषा कैसे जोड़ें?

  3. MYSQL:क्वेरी से मान अपडेट करें

  4. उपयोगकर्ता रूट के लिए प्रवेश निषेध - मैक ओएस पर mysql

  5. LIKE . का उपयोग करके GROUP_CONCAT खोजें