Mysql查询包含

时间:2014-10-02 15:04:00

标签: mysql sql

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。 以上是样本数据,实时可以是任意数字。 有人可以帮帮我吗?

2 个答案:

答案 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之类的东西来编写您选择的编程语言格式。