2016-03-31 8 views
7

Table_aअल्पविराम से अलग स्ट्रिंग से कैसे पूछें?

column name: list_id 
record 1: 1,2,5,6,8 
record 2: 1,3,2 
record 3: 6,7,2 
record 4: 9,8,0 

Table_b

id ='2'; 

रिकॉर्ड है अल्पविराम से अलग स्ट्रिंग में id='2' कैसे चयन करने के लिए? ऊपर के उदाहरण से यह रिकॉर्ड 1,2 और 3

क्वेरी लौटना चाहिए (कैसे इस क्वेरी में संशोधन करने, कृपया?):

SELECT * FROM Table_a,Table_b WHERE Table_b.id = Table_a.list_id; 
+4

अपने डेटा सामान्यीकृत के लिए काम करना चाहिए। समस्या सुलझ गयी। –

+0

@ डैगन, समस्या है, मैं मौजूदा सिस्टम को संशोधित कर रहा हूं जिसमें डेटा का भार है जो अब सामान्य करना असंभव है। – 112233

+2

'जहां table_a.list_id'% '+ table_b.id +'% '' –

उत्तर

3

उपयोग find_in_set समारोह है, लेकिन यह आप को सामान्य करना चाहिए जिस तरह से अनुकूल नहीं है आपका डेटा।

SELECT * FROM 
Table_a AS a 
JOIN Table_b AS b ON FIND_IN_SET(b.id,a.list_id) 
0

यह आपको

SELECT * FROM Table_a,Table_b WHERE Table_b.id = Table_a.list_id and 
concat(',',Table_a.list_id,',') like '%,2,%' 
+0

नहीं, यह नहीं होगा ... – sagi

+0

क्यों @ sagi। कृपया कारण साझा करें ताकि मैं यहां संपादित कर सकूं – ManiMuthuPandi

+0

bcaz list_id की अंतिम संख्या में अल्पविराम –

संबंधित मुद्दे