发布网友 发布时间:2022-04-25 12:44
共4个回答
懂视网 时间:2022-04-07 21:40
oracle认为 null 最大。
升序排列,默认情况下,null值排后面。
降序排序,默认情况下,null值排前面。
有几种办法改变这种情况:
(1)用 nvl 函数或decode 函数 将null转换为一特定值
(2)用case语法将null转换为一特定值(oracle9i以后版本支持。和sqlserver类似):
1.当值为某个值的时候,指定排序的时候的位置
select * from (
select 1 t from dual
union all
select 2 t from dual
union all
select 3 t from dual
union all
select 4 t from dual
) a order by case when a.t=2 then 1 else 0 end
2.当值为某个值的时候,排序的时候,永远在最后
select * from (
select 1 t from dual
union all
select 2 t from dual
union all
select 3 t from dual
union all
select 4 t from dual
) a order by case when a.t=2 then null else 0 end asc nulls last
结果:
(3)使用nulls first 或者nulls last 语法。
这是oracle专门用来null值排序的语法。
nulls first :将null排在最前面。如:select * from mytb order by mycol nulls first
null last :将null排在最后面。如:select * from mytb order by mycol nulls last
如果要想让含有null的列按照自己的意愿进行排序,可做如上处理。
sql查询结果集根据指定条件排序的方法
标签:
热心网友 时间:2022-04-07 18:48
不知道你什么数据库,
假如是
Oracle:
select
count(city_name),
city_name
from
tuan_info
where
source_type
=
1
and
city_name
in("北京","上海","广州")
group
by
city_name
ORDER
BY
INSTR('北京,上海,广州',
city_name);
如果是
SQL
Server
用
ORDER
BY
CHARINDEX(city_name,
'北京,上海,广州')
热心网友 时间:2022-04-07 20:06
这个需要在排序语句中使用条件判断
例如:表【table_temp】中列【col1】为字符,属性为varchar(10),排序时需要按照b、a、c的顺序显示,则可按照以下sql语句:
select
*
from
table_temp
order by
case
when col1='b' then 1
when col1='a' then 2
when col1='c' then 3
end
热心网友 时间:2022-04-07 21:40
你能不能把具体的问题写出来呢?
一般都会有查询的错误提示
错误代码之类的.
感觉你写的没什么问题呀,不过字段值,应该用单引号,不是双引号的.
select
count(city_name),city_name
from
tuan_info
where
source_type
=
1
and
city_name
in('北京','上海','广州')
group
by
city_name;