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))





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

    当然欢迎交流和指正

  • 相关阅读:
    React新闻网站--Header组件拆分及样式布局
    React 中的前端路由 react-router-dom
    Bootstrap4 图像形状+Jumbotron+信息提示框+按钮
    Bootstrap4 表格练习
    React好帮手--Ant Design 组件库的使用
    React 中的生命周期函数
    React 中 ref 的使用
    深入理解 Java 线程池
    Elastic 技术栈之 Filebeat
    mysql 开发进阶篇系列 54 权限与安全(账号管理的各种权限操作 下)
  • 原文地址:https://www.cnblogs.com/zhc088/p/719574.html
Copyright © 2011-2022 走看看