2016-04-25 7 views
2

Ich habe eine Mail-Tabelle erstellt, wo ich die folgenden Felder habe.Wie bekomme ich einen einzelnen Wert aus mehreren Werten in einem Mysql-Feld

id mail_to mail_subject mail_message 
1  6,9,10  Test Mail  Test Message 
2  4,8,6  Test Mail  Test Message 

Die im Feld mail_to gespeicherten Werte sind die ID der Benutzer. Ich möchte alle Mail wo Mail_to ist 6. Wie Sie die WHERE-Bedingung in diesem Fall verwenden.

Ich habe versucht, das Ergebnis mit dieser Abfrage zu erreichen, aber es hat nicht funktioniert.

SELECT * FROM tbl_profile_inbox WHERE mail_to = '6' ; 

Können Sie Jungs auf diesem einen helfen.

+0

verwenden Sie "SUBSTRING". –

+0

'SUBSTRING' kann in bestimmten Fällen zu falscher Ausgabe führen, wie' mail_to = 9,66,10' – 1000111

+1

Ich würde vorschlagen, dass Sie Ihren Tischentwurf ändern. – 1000111

Antwort

3

können Sie verwenden FIND_IN_SET() dafür:

SELECT * FROM tbl_profile_inbox WHERE FIND_IN_SET('6',mail_to) 
+0

Danke, es hat funktioniert. –

+0

Dies ist eine ** nette Lösung **, wenn Sie Ihr Tabellendesign nicht ändern möchten. Aber ich würde immer noch vorschlagen, dein Tischdesign zu ändern. – 1000111

+0

Warum muss ich mein Tischdesign ändern? Ist etwas falsch an diesem Design? –

0

Sie REGEXP auch nutzen können.

SELECT * FROM tbl_profile_inbox WHERE mail_ to REGEXP '[[:<:]]6[[:>:]]' 
Verwandte Themen