我有一张表如下字段及数据:
state level
1 A
1 B
2 A
3 B
4 A
4 B
我想得到的查询结果如下:
state level
1 B
1 A3 B
4 B
2 A
4 A即首先按条件state=1对level倒序,再state!=1对level倒序。如何用一条sql实现?
state level
1 A
1 B
2 A
3 B
4 A
4 B
我想得到的查询结果如下:
state level
1 B
1 A3 B
4 B
2 A
4 A即首先按条件state=1对level倒序,再state!=1对level倒序。如何用一条sql实现?
我也不太清楚这样可以不可以, 但是你可以参照着个思想.
order by level desc,state asc
select * from (select state,level from res_table r where r.state=1 order by level desc)
union
select * from (select state,level from res_table r where r.state!=1 order by level desc)
结果联合查询有自己的一套排序方法,并不像想象中的那样。
就是按level倒序排,并按state顺序排。。你试一下不就可以了么?
按一楼的结果:
1 B
3 B
4 B
1 A
2 A
4 A
我要的结果是:
1 B
1 A
3 B
4 B
2 A
4 A
select state, level from (select state,level from t_table r where r.state=1 order by level desc)
union
select state, level from (select state,level from t_table r where r.state!=1 order by level desc)
我试过联合查询,结果是按表的主键排序
1 A
1 B
2 A
3 B
4 A
4 B
我要的结果是:
1 B
1 A
3 B
4 B
2 A
4 A
联合查询的结果按state重新做了排序
是麻烦一点。
如果sql不行的话,只能用java的集合分两次来取了
用case语句把不是1的变成比1大的相同的值,做为第一个 排序条件就成了
18楼,最后的state不需要了吧
不好意思,帮不了
1 a
3 b
4 b
4 a
2 a
很抱歉jiangnan641020,没有好好看你的回复。。谢谢,结贴