2017-09-18 2 views
0

IN Abfrage nicht in sub_query von mysql
Bitte nehmen Look- arbeitet:IN Abfrage arbeitet Group_concat nicht in mysql Unterabfrage

SELECT (SELECT GROUP_CONCAT(text) 
     FROM course_intersted_in_list 
     WHERE id IN (urd.interested_course)) as interested_course_text, 
     urd.* 
from user_registration_data as urd 

Hier urd.interested_course haben Werte wie 1,2,3, 4 für einige

Benutzer wie

user_registration_data Tisch

id    interested_course 
1    1,2,3,4,5 
2    1,4,5 
ist

course_intersted_in_list Tabelle ist wie

id    interested_course 
1    mbbs 
2    dental 
3    basic 
+1

sind diese 'urd.interested_course' Werte als durch Komma getrennte Werte gespeichert? –

+0

Zeigen Sie Ihre Tabelle und einige Beispieldaten bitte –

+0

Überprüfen Sie diesen Link ... https: //stackoverflow.com/questions/17942508/sql-split-values-to-multiple-rows –

Antwort

2

Da die interested_course hat Komma ids getrennt, Sie find_in_set suchen einen Wert im csv-String verwenden:

SELECT (SELECT GROUP_CONCAT(text) 
     FROM course_intersted_in_list 
     WHERE find_in_set(id, urd.interested_course) 
     ) as interested_course_text, 
     urd.* 
from user_registration_data urd; 

Auch ich empfehlen, bleiben von CSV entfernt Daten in RDBMS und normalisieren die Daten. Auf diese Weise erhalten Sie ein skalierbares System.

+0

Es funktioniert Ich vergesse, im Set zu finden, es funktioniert jetzt –

+0

@vipulsharma, wenn seine Arbeit hier lesen, was mit den Arbeits Antworten zu tun https://stackoverflow.com/help/someone-answers –

1

können Sie MySQL verwenden FIND_IN_SET statt:

SELECT (SELECT GROUP_CONCAT(text) 
     FROM course_intersted_in_list 
     WHERE find_in_set(id, urd.interested_course)) as interested_course_text, 
     urd.* 
from user_registration_data as urd 

IN() funktioniert nicht auf Tabellenspalten, nur gegen eine Liste innerhalb ()

Verwandte Themen