首页 热点资讯 义务教育 高等教育 出国留学 考研考公

SQL查询按指定字段排序

发布网友 发布时间: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;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com