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

प्रत्येक उपयोगकर्ता के लिए एक ही तालिका में रिकॉर्ड डालने से पहले मौजूदा रिकॉर्ड कैसे जांचें?

एक विधि केवल सशर्त एकत्रीकरण का उपयोग करती है:

insert into users_settings (user_id, key)
    select user_id, 'app_reminder'
    from users_settings
    group by user_id
    having sum(key = 'app_reminder') = 0;

आप एक अधिक सामान्य समाधान चाहते हैं। यदि आप यह सुनिश्चित करना चाहते हैं कि उपयोगकर्ता/कुंजी जोड़े कभी भी डुप्लिकेट न हों, तो उन स्तंभों पर एक अद्वितीय बाधा या अनुक्रमणिका बनाएं:

alter table users_settings add constraint unq_users_settings_user_id_key
    unique (user_id, key);

फिर, आप on duplicate key update . का उपयोग करके पंक्तियों को सम्मिलित करना छोड़ सकते हैं :

insert into users_settings (user_id, key)
    select distinct user_id, 'app_reminder'
    from users_settings
    on duplicate key update user_id = values(user_id);

update कुछ नहीं करता, क्योंकि मूल्य वही है। MySQL इन्सर्ट करना छोड़ देता है और कोई एरर नहीं देता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TIME_TO_SEC () उदाहरण – MySQL

  2. Mysqli रोलबैक काम नहीं कर रहा है

  3. tomcat7:JDBC ड्राइवर वर्ग को लोड नहीं कर सका [com.mysql.jdbc.Driver]

  4. mysql डेटाबेस में सरणी सहेजें

  5. एसक्यूएल सर्वर - एसक्यूएल इंजेक्शन हमले से बचने के लिए गतिशील एसक्यूएल को संभालने की एक चाल?