2016-12-09 4 views
1

Grundsätzlich möchte ich einige Daten von tblvw1 ​​abrufen. Eine andere Tabelle enthält mögliche IDs innerhalb einer Spalte, die als verkettete Zeichenfolge gespeichert wird, zum Beispiel: "1 | 2 | 3 | 4". Next Ich habe versucht, das Ergebnis durch die folgende Abfrage zu erhalten:mysql übergibt Daten an in

SELECT x FROM tblname1 
WHERE id IN (SELECT REPLACE(content,'|',',') FROM tblname2 WHERE dataid = y) 

AS Ergebnis erhalte ich nur den ersten Wert, die anderen Daten nicht abgerufen wurde. Ich nehme an, dass die Unterabfrage in dieser Form führen wird:

SELECT x FROM tblname1 WHERE id IN ('1,2,3,4') 

, aber ich möchte diese Unterabfrage haben entweder als

SELECT x FROM tblname1 WHERE id IN (1,2,3,4) 

oder

SELECT x FROM tblname1 WHERE id IN ('1','2','3','4') 

Jede Idee?

+1

, die, warum sollten Sie nicht speichern Komma getrennte Werte – Rahul

+0

Können Sie einige Beispieldaten zeigen? –

Antwort

1

Können Sie die find_in_set Funktion verwenden?

SELECT x FROM tblname1 t1 
inner join tblname2 t2 on find_in_set (t1.id, REPLACE(t2.content,'|',',')) > 0 
where t2.dataid = 'y'; 

find_in_set Die Funktion gibt die Position des ersten Arguments innerhalb des zweiten Arguments. Wenn das Ergebnis> 0 ist, wurde das erste Argument gefunden.

Siehe http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set

+0

Genau das suche ich! Danke CGritton. –

+0

Großartig! Bitte akzeptieren und upvote. Vielen Dank! – CGritton

Verwandte Themen