mysql字段值为某值排在最前,其它的根据另外数值类型字段降序

时间:2023-02-03 03:04:11
这个其实是DEDECMS的。有个表dede_archives,里面有几十个字段,其中flag字段的类型为set('c','h','p','f','s','j','a','b'),另外一个click字段的类型是mediumint(8),我现在的问题是:
当查询的时候,把flag中包含‘c’这个值的排在最前,剩下的按click降序排列,请问能不能用SQL语句直接实现查询功能?SQL语句如何写?
说明:flag字段的值有很多种,有的是c,有的是c,p,h有的是a,f,c等等,而click字段只是数值。

4 个解决方案

#1


order by if(flag='c' ,0,1),click desc

#2


 


select * from dede_archives order by locate('c',flag) desc, click desc

 

#3


order by FIND_IN_SET('c',flag),click desc

#4


加limit以后,不一定能出现在最前位置~

#1


order by if(flag='c' ,0,1),click desc

#2


 


select * from dede_archives order by locate('c',flag) desc, click desc

 

#3


order by FIND_IN_SET('c',flag),click desc

#4


加limit以后,不一定能出现在最前位置~