在我的mysql表中,其中一个字段的值存储在(1 | 2 | 3)中。
id Skills
---- --------
1 1|2|3|5
2 2|4|5
3 4|6|3
4 5|2|3|1
我想根据匹配的技能搜索并列出id。如果我想列出包含3
的技能的ID,我必须列出ID 1,3,4
。就像我想要列出包含1,5 (either 1 nor 5 or both)
的技能的id(如多值1,4,3),然后我想列出1,2,4(i want to list 2 also
)。任何帮助都不胜感激。
提前致谢。
答案 0 :(得分:1)
select id
from your_table
where find_in_set('3', replace(skills, '|',',') > 0
select id
from your_table
where find_in_set('3', replace(skills, '|',',')) > 0
or find_in_set('5', replace(skills, '|',',')) > 0
但实际上你应该改变你的数据库结构。始终将单个值存储在列中以避免此类问题!
答案 1 :(得分:1)
这可能有所帮助:
SELECT * FROM YOUR_TABLE
WHERE Skills REGEXP '[[:<:]]1[[:>:]]' = 1
OR Skills REGEXP '[[:<:]]5[[:>:]]' = 1