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

mysql सम्मिलित करें यदि मान किसी अन्य तालिका में मौजूद नहीं है

आपको कुछ प्रकार के INSERT...SELECT क्वेरी।

अपडेट करें (स्पष्टीकरण के बाद): उदाहरण के लिए, यहां t2 . में एक पंक्ति डालने का तरीका बताया गया है यदि संबंधित पंक्ति t1 . में पहले से मौजूद नहीं है :

INSERT INTO t2 (v)
  SELECT temp.candidate
  FROM (SELECT 'test' AS candidate) temp
  LEFT JOIN t1 ON t1.v = temp.candidate
  WHERE t1.v IS NULL

एक ही क्वेरी के साथ कई पंक्तियों को सम्मिलित करने के लिए, मुझे डर है कि इससे बेहतर कुछ नहीं है

INSERT INTO t2 (v)
  SELECT temp.candidate
  FROM (
      SELECT 'test1' AS candidate
      UNION SELECT 'test2'
      UNION SELECT 'test3' -- etc
  ) temp
  LEFT JOIN t1 ON t1.v = temp.candidate
  WHERE t1.v IS NULL

मूल उत्तर

उदाहरण के लिए, इसमें other_column लगेगा table1 . की सभी पंक्तियों से जो WHERE . को संतुष्ट करता हो खंड और पंक्तियों को table2 . में सम्मिलित करें column_name . के रूप में उपयोग किए गए मानों के साथ . यह डुप्लीकेट कुंजी त्रुटियों को अनदेखा कर देगा।

INSERT IGNORE INTO table2 (column_name)
  SELECT table1.other_column
  FROM table1 WHERE table1.something == 'filter';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में टेबल इंजन बदलना

  2. पकाने की विधि डेटाबेस, संघटक द्वारा खोजें

  3. त्रुटि 1005 (HY000):तालिका नहीं बना सकता (त्रुटि:150)

  4. माइस्क्ल के लिए वैग्रांट पोर्ट अग्रेषण

  5. MySQL - चुनें ... जहां आईडी (..) - सही क्रम