2016-04-25 15 views
2

私は次のフィールドを持つメールテーブルを作成しました。Mysqlフィールドで複数の値を1つの値にする方法

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

mail_toフィールドに格納される値は、ユーザーのIDです。 mail_toが6のすべてのメールを表示したいと思います。この場合、where条件の使い方。

このクエリで結果を達成しようとしましたが、機能しませんでした。

SELECT * FROM tbl_profile_inbox WHERE mail_to = '6' ; 

皆さん、お手伝いできますか?

+0

「サブストリング」を使用します。 –

+0

'SUBSTRING'は' mail_to = 9,66,10'のような特定のケースで間違った出力につながる可能性があります – 1000111

+1

私はあなたのテーブルデザインを変更することを提案します。 – 1000111

答えて

3

あなたはそのためFIND_IN_SET()を使用することができます。

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

ありがとうございました。 –

+0

テーブルデザインを変更したくない場合は**素晴らしいソリューションです**。しかし、私はあなたのテーブルデザインを変更することをお勧めします。 – 1000111

+0

テーブルデザインを変更する必要があるのはなぜですか?このデザインに何か間違いはありますか? –

0

あなたもREGEXPを使用することができます。

SELECT * FROM tbl_profile_inbox WHERE mail_ to REGEXP '[[:<:]]6[[:>:]]' 
関連する問題