mysql set类型字段的sql操作知识 [php] `mark` set('index','best','hot') 用的人少,懂的人也少,找了很久,总算凑齐了一套知识点看上面的结构,mysql不傻,会存index吗,不会,存的是数字set字段是利用二进制数字来一一对应你设置的值,比如index,排在第0位,那么2的零次方等于1 [php] update from table set mark=1 [php] update from table set mark='index' 上面两个效果是一样的。接着问题就来了,就像织梦那样,如果我想将一篇文章添加一个热门,但是不想删除其它标识在呢么办,或者我就想删除一个标识,我也不知道以前有什么标识。 以下是添加标识[php] update from table set mark=mark |1|2 不要问我为什么用|这个东东,上面的意思是添加index、best两个标识,如果只添加hot标识,写成|4就可以了 下面是删除标识[php] update from table set mark=mark &~4&~1 好了,我先说了更新,下面说查询[php] select * from table where find_in_set('hot',mark) 这个是最简单的查询方法,也可以用hot所在位置的二进制数4来替代查询,效率是一样的也可以这么写:[php] select * from table where mark & 1 作者 longxuu bitscn.com
