質問

Multivalue属性で選択クエリを実行する方法MySQLには、多値フィールドから特定のデータを選択しますか?多くの助けが高く評価されています。これが問題のサンプルです:

テーブル

userid      groups
-------------------
  2          2,3,5
  4          1
  9          2,5,10
.

DataTypeはchar(250) groupsです。

グループ5に属するすべてのuseridsを選択するためにクエリを実行したいと思います。この例では、ユーザーID 2と9になります。

userid
------
  2
  9
.

MySQLクエリでそれを行く方法はありますか?またはPHP / MySQLの場合は?

役に立ちましたか?

解決

groupsデータ型が設定されている場合

を使うことができます

SELECT * FROM users WHERE FIND_IN_SET('5', groups);
.


更新

CHARまたはVARCHARの場合。あなたはこのを使うことができます

SELECT * FROM users
WHERE 
     groups LIKE '5,%'
     OR groups LIKE '%,5'
     OR groups LIKE '%,5,%'
     OR groups = '5'
.

他のヒント

これは醜いですが、MySQLで完全にやりたい場合は、次のことができます。

SELECT *
FROM users
WHERE groups LIKE '%,5,%'
OR groups = '5'
OR groups LIKE '%,5'
OR groups LIKE '5,%'
.

行ごとに1つのグループとユーザーへの参照を持つ別のテーブルを持つことをお勧めします。あなたはそのスキーマとはるかに単純な条件で結合することができます。

SELECT users.*
FROM users
INNER JOIN users_groups ON (users.user_id = users_groups.group_id)
WHERE users_groups.group_id = 5
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top