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

mysql में पिछले मानों को हटाए बिना अद्यतन पंक्ति

क्या आप इसे पहले विभाजित करने की कोशिश करने के बजाय इसे केवल जोड़ नहीं सकते?

UPDATE users_group 
SET user_ids = CONCAT_WS(',', user_ids, '5' ) 
WHERE group_id =1

लेकिन यह एक बुरी तरह से सामान्यीकृत डेटाबेस डिज़ाइन का सुझाव देता है। आम तौर पर एक अल्पविराम से अलग की गई सूची को मार्क बेकर द्वारा सुझाए गए अनुसार किसी अन्य तालिका (यानी, सूची में प्रति मान एक पंक्ति) पर पंक्तियों के रूप में संग्रहीत किया जाना चाहिए।

संपादित करें - यदि आप प्रत्येक user_ids फ़ील्ड में किसी भी आईडी की केवल एक प्रति रखना चाहते हैं, भले ही आप इसे कितनी बार सम्मिलित करने का प्रयास करें, और आप एक साथ कई आईडी जोड़ने में सक्षम होना चाहते हैं:-

UPDATE users_group a
INNER JOIN
(
    SELECT 3 AS an_id
    UNION 
    SELECT 4
) b
ON FIND_IN_SET(b.an_id, a.user_ids) = 0
SET a.user_ids = CONCAT_WS(',', a.user_ids, b.an_id ) 
WHERE a.group_id =1

फिर से संपादित करें - यदि आपके पास आईडी वाले उपयोगकर्ताओं की एक तालिका है तो आप उस आईडी का चयन कर सकते हैं जहां आईडी उनमें से एक है जिसे आप जोड़ना चाहते हैं।

कुछ इस तरह।

UPDATE users_group a
INNER JOIN
(
    SELECT id
    FROM users
    WHERE id IN (3, 4)
) b
ON FIND_IN_SET(b.id, a.user_ids) = 0
SET a.user_ids = CONCAT_WS(',', a.user_ids, b.id ) 
WHERE a.group_id =1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP/MySQL के साथ CSV अपलोड करें

  2. मेरे न्यूज़लेटर डेटाबेस में 'या 1=1/* sql इंजेक्शन मिला'

  3. कोडनिर्देशक simple_query बनाम क्वेरी बिल्डर (सम्मिलित करें, अपडेट करें और हटाएं)

  4. डीडीएल परिवर्तन तालिका घटनाओं को निष्पादित करने में त्रुटि को कैसे ठीक करें विदेशी कुंजी FKg0mkvgsqn8584qoql6a2rxheq को JDBC स्टेटमेंट के माध्यम से छोड़ दें

  5. पीएचपी पीडीओ तैयार बयानों में MySQL कार्यों का उपयोग करना