sql server 的order by 可以用筛选条件吗

  • o
    opensesame
    比如order by id asc
    实际上id有空值,我希望空值不要出现在最前,怎么写呢,
  • p
    peng123456
    前面加where ?
  • k
    kzm100
    nulls last
  • o
    onmax
    SELECT
    {*}
    FROM
    {table}
    WHERE
    id IS NOT NULL
    ORDER BY
    id ASC
  • o
    opensesame
    这样记录就不会显示了,我需要显示到后面去,我记得有个写法 自定义顺序的,怎么也查不到
  • l
    linzhzh
    select isnull(id,0) ida
    from xx
    order by ida;
    或者

    select isnull(id,99999999) ida
    from xx
    order by ida;
  • a
    alert9
  • x
    xsonglive
    order by ifnull(id,9999999)
  • i
    iamgs
    用case when,比如你这个例子就这样写:


    根据需要,最后写“ID asc”还是“ID desc”你随意。
  • o
    onmax
    这样就行了
    SELECT
    {*}
    FROM
    {table}
    ORDER BY
    -id DESC

    加个➖,用倒序。就是你要的结果
  • o
    opensesame
    对了 case 想起来了 ,谢谢谢谢
  • o
    opensesame
    这个居然也可以,什么道理,好神奇
  • o
    onmax
    回复12#opensesame


    最简单的办法。
    -column=0-column,正数变成负数,按倒序排,也就是按正序排。这个只对数字的column 有效。
  • o
    onmax
    回复13#akebuzai


    mysql 不支持 nulls first nulls last
  • z
    zybest
    嵌套两层select,里面那层用case when 转换null成一个其他值。
  • L
    Laputa
    回复10#onmax

    ID是字符串或是时间也行? 站董定制版
  • i
    iamgs
    回复17#Laputa

    当然不行啊,除非你convert成数值。
  • i
    iamgs
    sql server也不支持nulls last。
  • o
    onmax
    我瞎了。但是刚好也不支持。
  • o
    opensesame
    原来如此,学习了,感谢