zoukankan      html  css  js  c++  java
  • MSSQL 临时表和公用表使用案例

    1、临时表:

    1.1)实例1

    if(OBJECT_ID('tempdb..#a') IS NOT NULL) drop table #a;
    if(OBJECT_ID('tempdb..#b') IS NOT NULL) drop table #b;
    SELECT name into #a from syscolumns a with(nolock) where id=OBJECT_ID('NewsLetterSystem_Subscriber');
    SELECT name into #b from syscolumns b  where id=OBJECT_ID('tmpContact_130828005535769_5243_f0b7');
    select * from #a,#b
    where #a.name=#b.name;

    1.2) 实例2

    if(OBJECT_ID('tempdb..#a') IS NOT NULL) drop table #a;
    select * into #a from Categories;
    select * from #a;

    2、公用表:

    2.1)实例1

    with
    cr as
    (
       select CountryRegionCode from person.CountryRegion where Name like 'C%'
    )
    
    select * from person.StateProvince where CountryRegionCode in (select * from cr)
    
    --其中cr是一个公用表表达式,该表达式在使用上与表变量类似

    2.2) CTE后面必须直接跟使用CTE的SQL语句(如select、insert、update等),否则,CTE将失效。如下面的SQL语句将无法正常使用CTE:

    with
    cr as
    (
       select CountryRegionCode from person.CountryRegion where Name like 'C%'
    )
    select * from person.CountryRegion -- 应将这条SQL语句去掉
    -- 使用CTE的SQL语句应紧跟在相关的CTE后面 --
    select * from person.StateProvince where CountryRegionCode in (select * from cr)

    2.3)CTE后面也可以跟其他的CTE,但只能使用一个with,多个CTE中间用逗号(,)分隔,如下面的SQL语句所示:

    with
    cte1 as
    (
       select * from table1 where name like 'abc%'
    ),
    cte2 as
    (
       select * from table2 where id > 20
    ),
    cte3 as
    (
       select * from table3 where price < 100
    )
    select a.* from cte1 a, cte2 b, cte3 c where a.id = b.id and a.id = c.id

    2.4)实例4

    with ta as (
     SELECT name  from syscolumns a with(nolock) where id=OBJECT_ID('NewsLetterSystem_Subscriber')
    ),
    tb as
    (
    SELECT name from syscolumns b  where id=OBJECT_ID('tmpContact_130828005535769_5243_f0b7')
    )
    select * from ta,tb where ta.name=tb.name

    ps:将一个库中数据插到另一个库中:

    语句:

    insert into b.dbo.b
    select * from a.dbo.a

    实例1:

    insert into dbname1.dbo.tabname1
    select * from dbname2.dbo.tabname2

    判断临时表是否存在sql:

    if(OBJECT_ID('tempdb..#c') is not null) drop table #c
    if(OBJECT_ID('tempdb..#e') is not null) drop table #e if(OBJECT_ID('tempdb..#newc') is not null) drop table #newc
  • 相关阅读:
    centos7.4 系统安装指导
    win10下硬盘安装CentOS7
    CentOs7.X下配置FTP
    pyspider 安装使用过程的一些坑
    .Net Core 商城微服务项目系列(十三):搭建Log4net+ELK+Kafka日志框架
    .Net Core自动化部署系列(二):使用Jenkins打造镜像发布流水线
    Kubernetes 系列(六):Kubernetes部署Prometheus监控
    Kubernetes 系列(五):Prometheus监控框架简介
    .Net Core 商城微服务项目系列(十二):使用k8s部署商城服务
    Kubernetes 系列(四):使用Traefik访问.net core api
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/6879982.html
Copyright © 2011-2022 走看看