mysql 多条件排序问题

时间:2022-05-30 03:02:40
我现在有一条sql查询需要排序,表中有a、b、c三个字段,排序的方法是这样:假如a>1时用b来排序,否则用c来排序。请问各位大神,这样的查询应该怎么写?能不能实现?

11 个解决方案

#1


order by if(a>1,b,c)

#2


mysql 多条件排序问题留名学习一下,看来理解和会用之间果然还有很长的路要走~

#3


引用 1 楼 WWWWA 的回复:
order by if(a>1,b,c)
mysql 多条件排序问题

#4


引用 1 楼 WWWWA 的回复:
order by if(a>1,b,c)

这个写法在hql中能用吗?
我用的是hibernate来连接数据库

#5


测试一下不就知道了

#6


报错了:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') limit 15' at line 1
2013-5-7 16:17:50 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet webPage threw exception
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') limit 15' at line 1

#7


只有用1个字段保存 if(a>1,b,c)结果,再用此字段排序

#8


hql = " from Content where columnId='"+columnId+"' order by if(indexTopTime>now(),topOrder,writeTime)";

sql语句是hibernate拼接的,有办法保存吗?

#9


现在又有新的问题了:b与c是不同类型的数据,一个是时间,一个是序号

引用 1 楼 WWWWA 的回复:
order by if(a>1,b,c)
在排序时必须比较b与c的大小,但是b永远比c小,那么用b来排序还有什么意义呢?
我的意思是在当a>1是只按照b来排序,并且放在最前面

#10


举例说明
贴建表及插入记录的SQL,及要求结果出来看看
TIME_TO_SEC(time)试试

#11


看来不能用hql了,只能用sql了
在以前的帖子里找到了答案: 各位牛人,求救sql条件排序问题 

#1


order by if(a>1,b,c)

#2


mysql 多条件排序问题留名学习一下,看来理解和会用之间果然还有很长的路要走~

#3


引用 1 楼 WWWWA 的回复:
order by if(a>1,b,c)
mysql 多条件排序问题

#4


引用 1 楼 WWWWA 的回复:
order by if(a>1,b,c)

这个写法在hql中能用吗?
我用的是hibernate来连接数据库

#5


测试一下不就知道了

#6


报错了:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') limit 15' at line 1
2013-5-7 16:17:50 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet webPage threw exception
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') limit 15' at line 1

#7


只有用1个字段保存 if(a>1,b,c)结果,再用此字段排序

#8


hql = " from Content where columnId='"+columnId+"' order by if(indexTopTime>now(),topOrder,writeTime)";

sql语句是hibernate拼接的,有办法保存吗?

#9


现在又有新的问题了:b与c是不同类型的数据,一个是时间,一个是序号

引用 1 楼 WWWWA 的回复:
order by if(a>1,b,c)
在排序时必须比较b与c的大小,但是b永远比c小,那么用b来排序还有什么意义呢?
我的意思是在当a>1是只按照b来排序,并且放在最前面

#10


举例说明
贴建表及插入记录的SQL,及要求结果出来看看
TIME_TO_SEC(time)试试

#11


看来不能用hql了,只能用sql了
在以前的帖子里找到了答案: 各位牛人,求救sql条件排序问题