यह मानते हुए कि आप MySQL का उपयोग कर रहे हैं, और यह मानते हुए कि आपकी तालिका का नाम test
. है , और यह मानते हुए कि दोनों कॉलम स्ट्रिंग प्रकार हैं:
SELECT
t1.id, count(t2.list)
FROM
(test t1 LEFT JOIN test t2 ON
(t2.list LIKE CONCAT('%,', t1.id, ',%')) OR
(t2.list LIKE CONCAT('%,', t1.id)) OR
(t2.list LIKE CONCAT(t1.id, ',%')))
GROUP BY t1.id;
कृपया ध्यान रखें कि यह समाधान आपके पास मौजूद रिकॉर्ड्स की संख्या और list
में स्ट्रिंग्स की औसत लंबाई के आधार पर बहुत धीमा हो सकता है। फ़ील्ड.
अगर आपको कुछ तेज़ चाहिए, तो मुझे लगता है कि यह एक ही प्रश्न नहीं हो सकता है। शायद हमें उसके लिए एक संग्रहीत कार्यविधि या कुछ अनुप्रयोग तर्क लिखना होगा, या अतिरिक्त तालिकाओं या स्तंभों और एकाधिक SQL कथनों की एक श्रृंखला का उपयोग करना होगा।