表
id name(varhcar)
2 15
3 15,23
4 1315,424
5 1512,2323
6 23,15,345
7 253,234,15
我需要找出那些包含15的值,这意味着我需要2,3,6,7而不是4,5。 以上是样本数据,实时可以是任意数字。 有人可以帮帮我吗?
答案 0 :(得分:1)
如果您的数据库很小,请考虑使用find_in_set
功能:
select * from your_table
where find_in_set('15',name);
考虑将模型更改为主 - 详细信息表,以便在有大表的情况下提高速度。
答案 1 :(得分:0)
这是一种可以采用的关系模型,可以解决这个问题:
TABLE: records
id
2
3
4
5
6
7
TABLE: values
record_id value
2 15
3 15
3 23
4 1315
4 424
5 1512
5 2323
6 23
6 15
6 345
7 253
7 234
7 15
然后你可以查询:
SELECT DISTINCT id FROM records
INNER JOIN values ON records.id = values.record_id AND values.value = 15
这是您可以充分利用MySQL查询优化器的唯一方法。
并不是说你不可能做你想做的事情,但它有点忽略了这一点。
如果您已经以这种格式存储数据,则应编写一次性迁移以将其转移到此标准"标准化"使用Java split
或PHP explode
之类的东西来编写您选择的编程语言格式。