如何在 MySQL 列数组中查找 id
How to find id in MySQL column array
公司table结构:
(`id`=`1`, `name`=`CompanyName`, `members`=`3,52,134,21`)
members
栏中的数字是添加到该公司的用户id。
当 id = 3 OR 52 OR 134 OR 21
的用户登录到上面的行时,应该返回一个 MySQL 查询。
这可以通过查询实现吗,还是我必须编辑我的 table 结构?
使用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;
像这样使用 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);
尝试:
SELECT * FROM tbl_name WHERE FIND_IN_SET('3',members);
注意:切勿以逗号分隔格式存储数据。如果还不晚,那就再做一个table,归一化结构。通过规范化结构,通过为列提供索引可以轻松快速地进行搜索。
table 姓名:company_users
pk_id member_id company_id(foriegn_key of company_table)
1 3 1
2 52 1
3 21 1
公司table结构:
(`id`=`1`, `name`=`CompanyName`, `members`=`3,52,134,21`)
members
栏中的数字是添加到该公司的用户id。
当 id = 3 OR 52 OR 134 OR 21
的用户登录到上面的行时,应该返回一个 MySQL 查询。
这可以通过查询实现吗,还是我必须编辑我的 table 结构?
使用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;
像这样使用 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);
尝试:
SELECT * FROM tbl_name WHERE FIND_IN_SET('3',members);
注意:切勿以逗号分隔格式存储数据。如果还不晚,那就再做一个table,归一化结构。通过规范化结构,通过为列提供索引可以轻松快速地进行搜索。
table 姓名:company_users
pk_id member_id company_id(foriegn_key of company_table)
1 3 1
2 52 1
3 21 1