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

लेफ्ट जॉइन और इनर जॉइन का उपयोग करके डालें

आपके द्वारा चुने जा रहे कॉलम के बारे में आपको विशिष्ट होना चाहिए। यदि आपका user तालिका में चार कॉलम थे id, name, username, opted_in आपको क्वेरी से ठीक उन चार कॉलमों का चयन करना होगा। सिंटैक्स ऐसा दिखता है:

INSERT INTO user (id, name, username, opted_in)
  SELECT id, name, username, opted_in 
  FROM user LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id

हालांकि, user_permission . के खिलाफ शामिल होने का कोई कारण नहीं दिखता है यहां, चूंकि उस तालिका का कोई भी स्तंभ user . में नहीं डाला जाएगा . वास्तव में, यह INSERT प्राथमिक कुंजी विशिष्टता उल्लंघनों के साथ विफल होना तय लगता है।

MySQL एक ही समय में एकाधिक तालिकाओं में सम्मिलित करने का समर्थन नहीं करता है। आपको या तो दो INSERT करने की आवश्यकता है पहली क्वेरी से अंतिम इंसर्ट आईडी का उपयोग करके अपने कोड में स्टेटमेंट, या AFTER INSERT बनाएं प्राथमिक तालिका पर ट्रिगर करें।

INSERT INTO user (name, username, email, opted_in) VALUES ('a','b','c',0);
/* Gets the id of the new row and inserts into the other table */
INSERT INTO user_permission (user_id, permission_id) VALUES (LAST_INSERT_ID(), 4)

या ट्रिगर का उपयोग करना :

CREATE TRIGGER creat_perms AFTER INSERT ON `user`
FOR EACH ROW
BEGIN
  INSERT INTO user_permission (user_id, permission_id) VALUES (NEW.id, 4)
END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्लाइंट-साइड तैयार बयान क्या हैं?

  2. मैं अपने कोड को और अधिक सुरक्षित बनाने के लिए पीडीओ के साथ पासवर्ड हैशिंग का उपयोग कैसे करूं?

  3. क्या उपयोगकर्ता संदेश भेजने की इस शैली को प्राप्त करने का कोई आसान तरीका है?

  4. क्लाउड में अपने डेटाबेस क्लस्टर तक सुरक्षित पहुंच के लिए OpenVPN का उपयोग करना

  5. JPQL में LIMIT क्लॉज विकल्प क्या है?