MySQL
例如这样的select `id` from `table` where left(`flag`,1)=1;
我是有一串名为flag的标识用于表示该商品的各种属性, 10位数Int, 例如1100000000。
然后比如第一个数字1表示该商品价格区间在100-200元。
然后我想从表中搜出这个flag中取出第一个数字为1的商品
这个可以实现么, 仅仅用mysql
回复讨论(解决方案)
select `id` from `table` where left(`flag`,1)='1'
你的sql不就是吗??
晕。。。我感觉像是这样写的, 我试了几次没成功
是我where条件写错了
另外我想问下, 这样的sql语句性能怎么样呢
select `id` from `table` where left(`flag`,1)='1'
我想问下, 这样的sql语句性能怎么样呢
性能应该不怎么样 用到函数了
性能就不怎样了,因为不能使用索引写作这样才可以使用索引(如果有的话)select `id` from `table` where `flag` like '1%'
你这是要做商品筛选吧 用你这个方法你有没有想过以后要是增加属性 你以前的数据怎么办
性能就不怎样了,因为不能使用索引写作这样才可以使用索引(如果有的话)select `id` from `table` where `flag` like '1%'
是给flag字段加索引么, like的效率比left还高啊?
你这是要做商品筛选吧 用你这个方法你有没有想过以后要是增加属性 你以前的数据怎么办
我是在想比如商品有10个属性吧, 我flag字段中每个属性对应一个数字, 我现在只用到了前两个, 后边的我自动补0, 以后用到了再赋值。 您有什么更好的做分类的方法么
建一个属性表 aid 属性
一个商品表 gid
一个对应表 aid gid 对应边里aid 和gid 都可以索引 扩展属性的时候只要编辑属性表就可以了
只要 like 的匹配串左端不是变数,那么就可以使用到索引对于 1,2,11 所以后是 1,11,2like '1%' 总是会快速取出 1,11 的,因为他们聚集在一起