zoukankan      html  css  js  c++  java
  • 一些常用的Sql语句

    1、根据一个表批量更新另一个表:

    表A 字段colA1 colA2 colA3
    表B 字段colB1 colB2 colB3

    要求: 把表B中colB1和表A中colA1相等的记录进行更新,使得colB2=colA2,colB3=colA3。

    Sql语句:

    update B set 
        B.colB2=A.colA2,
        B.colB3=A.colA3
    from B inner join A  
        on B.colB1=A.colA1

     2、搜索并截取固定字符长度:

    select substring('abcdefg',0,3)
    select substring(col,startindex,length) from table

     3、合并/同步数据(目标表中存在则更新,目标表中不存在则插入):

    merge 语句是一个多种功能的混合语句,在一个查询中可以完成insert、update、delete等功能。

    根据与源表联接的结果,对目标表执行插入、更新或删除操作。源表中包含即将被添加(或更新)到目标表中的数据行,而目标表接受插入(或更新)操作,可以对两个表进行同步操作。

    SQLServer2008之前的版本中是没有的,所以以前都是先删掉再添加,或写一些分支条件判断存在否再insert 或update。

    --创建源表
    create table sourceTable(
        id int,
        content varchar(30)
    )
    
    --创建目标表
    create table targetTable(
        id int,
        content varchar(30)
    )
    
    --插入测试数据
    insert into sourceTable values (1,'S001'),(2,'S002'),(3,'S003'),(4,'S004'),(5,'S005')
    insert into targetTable values (1,'target001'),(2,'target002'),(6,'target006'),(7,'target007')
    
    select * from sourceTable   --源表
    --id       content
    --
    1 S001 --2 S002 --3 S003 --4 S004 --5 S005 select * from targetTable --目标表 --id content
    --
    1 target001 --2 target002 --6 target006 --7 target007 --编写merge语句 merge into targetTable t --目标表 using sourceTable s --源表 on t.id = s.id --类似join 完成两表之间的匹配 when matched --如果两表中有值被匹配,更新 then update set t.content = s.content when not matched --如果没有匹配结果,插入 then insert values(s.id,s.content) when not matched by source --目标表中存在但源表中不存在,删除 then delete; --再次查询,则两表同步,select * from sourceTable/targetTable
    --id       content
    --1        S001
    --2        S002
    --3        S003
    --4        S004
    --5        S005
  • 相关阅读:
    我該怎麼辦
    這麼多年興許從來沒有釋放過
    我想做一個快樂的孩子
    纠结
    如何克服心煩氣躁
    如何樹立威嚴
    第零次作业
    第三周作业
    第二周作业,
    第二周作业
  • 原文地址:https://www.cnblogs.com/yaosuc/p/4726195.html
Copyright © 2011-2022 走看看