zoukankan      html  css  js  c++  java
  • SQL 表中记录查询排序随笔(sql server中order by使用方式小总结)

    跟DB打交道,用得最多的是查询
    既然查询就会有查询记录排序问题
    我一直通过order by来解决
    order by常用的使用方式我就不提了

    项目的需求千变万化
    让我们看看下面几个怪排序需求

    --先创建一个表
    create table ai(
    id int not null,
    no varchar(10) not null
    )
    go

    --往表中插入数据
    insert into ai
     select 105,'2'
     union all
     select 105,'1'
     union all
     select 103,'1'
     union all
     select 105,'4'
    go

    --查询效果如下:
    select * from ai
    go
    id          no        
    ----------- ----------
    105         2
    105         1
    103         1
    105         4


    i.
    --要求的查询结果如下
    --即要求no列的数据按'4','1','2'排列
    id          no        
    ----------- ----------
    105         4
    105         1
    103         1
    105         2



    --解决方案1
    --利用函数CHARINDEX
    select * from ai
     order by charindex(no,'4,1,2')

    --解决方案2
    --利用函数case
    select * from ai
     order by case when no='4' then 1
            when no='1' then 2
                          when no='2' then 3
                     end

    --解决方案3
    --利用UNION 运算符
    select * from ai
     where no='4'
    union all
    select * from ai
     where no='1'
    union all
    select * from ai
     where no='2'

    ii.
    --查询要求指定no='4'排第一行,其他的行随机排序
    id          no        
    ----------- ----------
    105         4
    105         2
    105         1
    103         1

    --解决方案
    select * from ai
     order by case when no='4' then 1
       else 1+rand()
      end

    iii.
    --查询要求所有行随机排序

    --解决方案
    select * from ai
     order by newid()


    iiii
    --有一表ab有列i,其中数据如下:
    i varchar(10)
    a1
    a10
    a101
    a5
    p4
    p41
    p5


    --现在要求列i中数据先按字母排序,再按数字排序
    --效果如下:
    a1
    a5
    a10
    a101
    p4
    p5
    p41

    --解决方案
    select * from ab
     order by left(i,1),convert(int,substring(i,2,8000))





    希望上面提到的知识对你有所提示

    当然欢迎交流和指正

  • 相关阅读:
    ASP.NET实现写入和读取图片(C#+SQL Server)
    nginx for windows: 让nginx以服务的方式运行(亲侧修正)
    开源射击FPS游戏Blood Frontier Beta 2发布
    批处理更改IP
    Javascript 函数: CTRL+回车 提交表单
    汇总Javascript各种判断脚本
    Linux在好莱坞战胜了微软?
    SATA硬盘和IDE硬盘共存问题
    总结性知识:107个常用Javascript语句
    ASP.NET调用javascript脚本的方法总结
  • 原文地址:https://www.cnblogs.com/zhc088/p/719574.html
Copyright © 2011-2022 走看看