1

複数値属性に対してselectクエリを実行するにはどうすればよいですか?mysqlには、複数値フィールドから特定のデータを選択する関数がありますか?多くの助けをいただければ幸いです。問題の例を次に示します。

テーブル

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

データ型char(250)groups

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

userid
------
  2
  9

mysqlクエリでそれを実行する方法はありますか?またはphp/mysqlで?

4

2 に答える 2

3

groupsデータ型がSETの場合

使用できます

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'
于 2012-03-11T00:52:22.917 に答える
0

これは醜いですが、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
于 2012-03-11T01:00:50.413 に答える