如何在MySQL列数组中找到id

时间:2015-12-18 10:27:24

标签: mysql sql select join find-in-set

公司表格结构:

(`id`=`1`, `name`=`CompanyName`, `members`=`3,52,134,21`)

members列中的数字是添加到该公司的用户ID。

当用户id = 3 OR 52 OR 134 OR 21登录时,上面的行应返回MySQL查询。

这可以通过查询实现,还是必须编辑我的表结构?

3 个答案:

答案 0 :(得分:3)

使用FIND_IN_SET()功能:

试试这个:

SELECT u.*
FROM Company c
INNER JOIN company_users u ON FIND_IN_SET(u.id, c.members)
WHERE c.id = 1;

答案 1 :(得分:3)

尝试:

SELECT * FROM tbl_name WHERE FIND_IN_SET('3',members);

注意:绝不以逗号分隔格式存储数据。如果还不晚,那么再制作一个表并对结构进行标准化。通过规范化结构,通过为列提供索引,可以轻松快速地进行搜索。

表名:company_users

pk_id    member_id   company_id(foriegn_key of company_table)
1          3           1
2          52          1
3          21          1

答案 2 :(得分:1)

像这样使用FIND_IN_SET()方法..

SELECT * FROM table_name WHERE  FIND_IN_SET('your_search','table_column_name');

例如:

SELECT * FROM table_name WHERE FIND_IN_SET('52',members);