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的值。 以上是样本数据,实时可以是任何数字。 任何人都可以帮我吗?
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的值。 以上是样本数据,实时可以是任何数字。 任何人都可以帮我吗?
如果你的数据库是小,考虑使用find_in_set
功能:
select * from your_table
where find_in_set('15',name);
考虑改变模型,掌握细节表提高速度,如果你有一张大桌子。
这是怎样的关系模型,你可以采取以使这是一个很容易解决的问题:
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
这样的编程语言,编写一次性迁移以将其转换为此“规范化”格式。
使用'FIND_IN_SET()'函数,它在MySQL文档中。 – Barmar 2014-10-02 15:06:41