当我遇到这个问题时,我正在使用php中的一个简单的mysql表,我想知道是否有解决方案。
该表以逗号分隔格式保存用户名及其位置。
id|user|locations
------------------
1 |abc | A, B, C
------------------
2 |xyz | P, Q, R
我想知道是否有任何方法可以编写一个mysql查询,以便它返回给我一个位置为A的用户。 基本上,如果逗号分隔值中的一个值匹配,则应返回记录。
我知道这是将它们存储为单独记录的更好方法,但我很好奇是否可以进行这样的检索。 提前谢谢。
答案 0 :(得分:2)
理想情况下,您应该考虑规范化数据,这样就不会存储以逗号分隔的列表。
但如果你不能改变表结构,MySQL有一个FIND_IN_SET()
函数,可以用来返回符合你想要的值的行:
select id, user, locations
from yourtable
where find_in_set('A', locations)
答案 1 :(得分:1)
我们认为
以下查询可能会对您有所帮助 -
SELECT * FROM table
WHERE column
REGEXP'(^ |,)A($ |,)'
您可以在 -
中找到有用的链接How to query comma delimited field of table to see if number is within the field