2016-08-31 9 views
1

MySQLを使用してidを列(カンマ区切りの値)で使用できる場合は、値を選択するにはどうすればよいですか?mysqlを使用してidを列で使用できる値(カンマ区切りの値)を選択するにはどうすればよいですか?

group_id列で指定されたid = 17の場合、すべての値を取得する必要があります。

表:

+------------+---------------+ 
| user_id | group_id  | 
+------------+---------------+ 
|   1 |   1,2,3 | 
|   3 |  12,23,17 | 
|   5 |   17,26 | 
+------------+---------------+ 

私が試してみてください。

SELECT * FROM `group` WHERE units_id IN('17'); //No result 

期待結果:

+------------+---------------+ 
| user_id | group_id  | 
+------------+---------------+ 
|   3 |  12,23,17 | 
|   5 |   17,26 | 
+------------+---------------+ 
+2

あなたはCSV – Jens

+0

くださいREFとして値を格納する場合、それは非常に悪いDB設計です。 com/questions/5033047/mysql-query-finding-values-in-a-comma-separated-string –

答えて

0

はこの1つを試してみてください参照してください。 あなたは find_in_setを使用することができます。

SELECT * FROM `user` WHERE find_in_set('17',group_id) ORDER BY user_id; 

結果:

+------------+---------------+ 
| user_id | group_id  | 
+------------+---------------+ 
|   3 |  12,23,17 | 
|   5 |   17,26 | 
+------------+---------------+ 

はREFます。http:// stackoverflowのMySQL query finding values in a comma separated string

+0

ありがとうございます。それは私の問題を解決しました。 –

2

あなたはFIND_IN_SET

SELECT * FROM `group` WHERE FIND_IN_SET(17,group_id); 
使用することができます

注:カンマ区切りの値を列に格納することを強くお勧めします。読まなければならない:

Is storing a delimited list in a database column really that bad?

はい

はまた、あなたがあなたの識別子ですの名前としてMySQL reserved wordsを使用しないでください。使用中はバックティックで囲むように注意してください。

+0

ありがとうございました。あなたの質問は働いた。 –

0

あなたは列がカンマ区切りリスト

からの値が含まれている場合は、CSVファイルとして値を格納する場合、それは非常に悪いDB設計である'find_in_set`

SELECT * FROM `group` WHERE find_in_set('17',units_id); 

INチェックを使用することができます。

よりinfoemartionについてmysql documentation

関連する問題