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

SQL डुप्लिकेट पंक्तियों को मर्ज करता है और अलग-अलग मानों में शामिल होता है

अल्पविराम से अलग की गई सूचियों का उपयोग करने का गलत अभ्यास। आप दस्तावेज़ीकरण पढ़ सकते हैं डेटाबेस सामान्यीकरण के बारे में।

अल्पविराम से अलग की गई सूचियों में काफी व्यावहारिक समस्याएं हैं :

  • यह सुनिश्चित नहीं कर सकता कि प्रत्येक मान सही डेटा प्रकार है:1,2,3, केला,5 को रोकने का कोई तरीका नहीं
  • मानों को लुकअप तालिका से जोड़ने के लिए विदेशी कुंजी बाधाओं का उपयोग नहीं कर सकते; संदर्भात्मक अखंडता को लागू करने का कोई तरीका नहीं है।
  • विशिष्टता को लागू नहीं किया जा सकता:1,2,3,3,3,5 को रोकने का कोई तरीका नहीं
  • पूरी सूची लाए बिना सूची से कोई मान नहीं हटाया जा सकता।
  • स्ट्रिंग कॉलम में फिट होने वाली सूची से अधिक लंबी सूची संग्रहीत नहीं कर सकता।
  • सूची में दिए गए मान वाले सभी निकायों को खोजना मुश्किल है; आपको एक अक्षम टेबल-स्कैन का उपयोग करना होगा। नियमित अभिव्यक्तियों का सहारा लेना पड़ सकता है, उदाहरण के लिए MySQL में:idlist REGEXP '[[:<:]]2[[:>:]]'
  • सूची में तत्वों की गणना करना, या अन्य समग्र क्वेरी करना कठिन है।
  • मानों को उनके द्वारा संदर्भित लुकअप तालिका में शामिल करना कठिन है।
  • सूची को क्रमबद्ध क्रम में लाना मुश्किल है।
  • पूर्णांकों को स्ट्रिंग के रूप में संग्रहीत करने से बाइनरी पूर्णांकों को संग्रहीत करने में लगभग दोगुना स्थान लगता है। अल्पवर्णों द्वारा ली गई जगह का उल्लेख नहीं करना।

लेकिन अगर आपको किसी भी मामले में इसकी आवश्यकता है, तो आप ऐसा कुछ उपयोग कर सकते हैं:

SELECT  FilmID,
        FilmName, 
        Id = REPLACE(
                (
                SELECT DateShown AS [data()]
                FROM YourTable
                WHERE FilmID = a.FilmID
                ORDER BY FilmName FOR XML PATH('')), ' ', ','
                )
FROM    YourTable a
WHERE   FilmName IS NOT NULL
GROUP BY FilmID, FilmName

अल्पविराम से अलग की गई सूचियां




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्रति दिन पंजीकृत उपयोगकर्ताओं की गणना करने के लिए SQL क्वेरी

  2. mysqli_stmt::bind_param():प्रकार परिभाषा स्ट्रिंग में तत्वों की संख्या बाइंड चर की संख्या से मेल नहीं खाती

  3. दो MySQL तालिका के बीच user_id मान साझा करना

  4. चयन में MySQL वाइल्डकार्ड

  5. INSERT () का उपयोग करके MySQL में किसी अन्य स्ट्रिंग में स्ट्रिंग कैसे डालें