zoukankan      html  css  js  c++  java
  • TOP AND APPLY

    select top(n) from table order by fieldname

    如果根据fieldname不能确定顺序,则会产生不稳定的输出.

    若使用 with ties 查询结果集会包含额外的行,这些额外行在排列上的值与top最后一行排列的值相同.

    apply 运算符有两种形式:cross apply and outer apply.类似 inner join and left outer join.

    可以把外部查询的列作为参数传递给表值函数.

    使用top and apply 组合解决常见的问题

    1.每组中的top(n)

    方案一:使用 row_number() over (partition by ) 子句 生成行号.

    适用的场景是表不能太大.太大的话效率也会低,因为生成行号需要扫描一遍表或索引.

    方案二:top(n)关联子查询

    方案三:apply 与top(n)关联子查询

    例子:

    select e.empid,a.orderid,a.custid,a.orderdate,a.requireddate

    from

    hr.employees as e

    cross join

    (select top(3) orderid,custid,orderdate,requireddate from sales.orders as o

    where o.empid=e.empid

    order by orderdate desc,orderid desc) as a;

    2匹配当前值的前一个值

    方案一:使用 apply 也有较好的执行效率.

    方案二:使用CTE 与row_number()相结合的方法.

    节选自:inside sqlserver2008 技术内幕 tsql 查询

  • 相关阅读:
    用php爬取网页
    无论我是一只菜鸟笨鸟
    有线网卡与无线网卡同时使用
    scapy 命令理解
    Wireshark Filter
    python OS/pdb 模块及数据类型基础
    scapy down and install
    python 字符操作函数
    python 类型集
    python 科学计算
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/2164581.html
Copyright © 2011-2022 走看看