zoukankan      html  css  js  c++  java
  • CTE+操作性语句(删除无主键的相同的多行数据)+CTE操作技巧

    删除一个无主键的多行的数据,首先我们不能保证它的唯一性,这是一个比较麻烦的地方。

    首先我想到了使用RowNumber的方式来,然后想到了CTE,CTE他本身就是一视图,操作起来更能节省资源

    CTE以前只是用到他本身的查询语句

    今天遇到一个问题

    看表

    create table deleteSomeTable
    (
     [name] varchar(20),
     [va]  varchar(20)
     )
     ;
     insert Into deleteSomeTable values('na','va')
     insert Into deleteSomeTable values('na','va')
     insert Into deleteSomeTable values('na2','va')
     insert Into deleteSomeTable values('na1','va')
     insert Into deleteSomeTable values('na1','va')

    name                 va
    -------------------- --------------------
    na                   va
    na                   va
    na                   va
    na2                  va
    na1                  va
    na1                  va

    我如何删除这种没有唯一标示的行呢?使用临时表进行存储,删除完成了再进行修改回来。。。。

    效率太低。

    看看CTE一句就解决问题了

    ;with t as
    (
     select * ,row_number() over(partition by name,va order by name,va) as [num]
     from deleteSomeTable
    )
    delete from t where [num]<>1

    从这里我想得出的结论是不是:cte本身不是临时表的概念,而是视图这样的概念。

    但是CTE不支持 包含了多表的操作,即使里面查询出来的结果只是单表的

    视图或函数 't' 不可更新,因为修改会影响多个基表。

  • 相关阅读:
    也用一下Windows Live Writer
    常用16种iOS视图切换动画
    iPad平板电脑程序开发基础规则(源址:http://www.cocoachina.com/bbs/simple/?t82559.html)
    NSXMLParser详解
    UIScrollView用法
    使用UIActivityIndicatorView 和多线程
    为视图加边框
    iPhone SDK开发基础之iPhone程序框架
    NSXMLParser详解(事例)
    iOS开发 小知识点
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146530.html
Copyright © 2011-2022 走看看