MySQL多値属性からデータを選択します
-
11-12-2019 - |
質問
Multivalue属性で選択クエリを実行する方法MySQLには、多値フィールドから特定のデータを選択しますか?多くの助けが高く評価されています。これが問題のサンプルです:
テーブル
userid groups
-------------------
2 2,3,5
4 1
9 2,5,10
.
DataTypeはchar(250)
のgroups
です。
グループ5に属するすべてのuserid
sを選択するためにクエリを実行したいと思います。この例では、ユーザー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
. 所属していません StackOverflow