0

在我的 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。如果我想列出包含的技能的 id 3,我必须列出 id 1,3,4。就像如果我想列出包含的技能的 ID 1,5 (either 1 nor 5 or both)(例如多个值 1、4、3),那么我想列出1,2,4(i want to list 2 also)。任何帮助都将不胜感激。

提前致谢。

4

2 回答 2

1

使用FIND_IN_SET

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

但你实际上应该改变你的数据库结构。始终将单个值存储在列中以避免此类问题!

于 2013-05-06T10:50:24.850 回答
1

这可能会有所帮助:

SELECT * FROM YOUR_TABLE
WHERE Skills REGEXP '[[:<:]]1[[:>:]]' = 1
OR Skills REGEXP '[[:<:]]5[[:>:]]' = 1
于 2013-05-06T10:52:25.110 回答