zoukankan      html  css  js  c++  java
  • SQL中使用update inner join和delete inner join

    Update
    
    Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete居然支持inner join的update方式,这个在表间关联来做更新和删除操作非常有用.
    
    列子:
    Sql代码
    
        update tb_User  
        set pass=''  
        from tb_User usr  
        inner join tb_Address addr on usr.nAddressFK = addr.nAddressID  
        where usr.id=123  
    
    update tb_User set pass='' from tb_User usr inner join tb_Address addr on usr.nAddressFK = addr.nAddressID where usr.id=123
    
    update的格式是
    update t1 set t1.name=’Liu’ from t1 inner join t2 on t1.id = t2.tid
    
    MYSQL,ACCESS 写法如下:
    Sql代码
    
        UPDATE mem_world AS mw1 INNER JOIN mem_world   AS   mw2    
        ON   mw1.parentid = mw2.wid   
        SET mw1.level = mw2.level    
        WHERE mw2.baseid = 107    
        AND   mw2.parentid = 0    
        AND   mw2.size > 1;  
    
    UPDATE mem_world AS mw1 INNER JOIN mem_world AS mw2 ON mw1.parentid = mw2.wid SET mw1.level = mw2.level WHERE mw2.baseid = 107 AND mw2.parentid = 0 AND mw2.size > 1;
    
    on是表连接的筛选条件
    就是说,表连接后,会产生一个类似于临时的视图这么一个东西
    where是从这个临时的视图中筛选数据的
    所以,你首先要搞清,你的所谓的2个条件属于哪一种
    
    Delete
    delete 语句也是类似
    delete from t1 from t1 inner join t2 on t1.id = t2.tid
    
    注意蓝色部分。
    mysql:
    Sql代码
        DELETE mwb FROM   mem_world_building AS mwb INNER JOIN mem_world AS mw  
        ON mwb.wid = mw.wid  
        where mw.type between 11 and 15   
        and baseid = 107   
        and mw.parentid <> 0   
        and   mw.size > 1;  
    
    DELETE mwb FROM mem_world_building AS mwb INNER JOIN mem_world AS mw ON mwb.wid = mw.wid where mw.type between 11 and 15 and baseid = 107 and mw.parentid <> 0 and mw.size > 1;
    
    下面是ORACLE的:
    Sql代码
        DELETE TABLE1 where KHID exists ( select KHID from table2 where FWDWID=8)  
    Sql代码
        DELETE TABLE1 where exists ( select 1 from table2 where and table1.khid=table2.khid and FWDWID=8); 
  • 相关阅读:
    log4j在eclipse下使用
    Java实现IOS推送(利用javapns1.6)
    [转]浅谈多核CPU、多线程与并行计算
    关于select的字段加别名的语法
    [转]maven环境快速搭建
    Java实现IOS推送(Javapns2.2)
    千年服务器GM命令及使用详解
    [转载 蓝韦巍]类似浩方、VS对战平台系统的实现
    召唤和删除怪物程序段
    WPE下载 & WPE & 各版本下载 及 教程
  • 原文地址:https://www.cnblogs.com/JuneZhang/p/3064384.html
Copyright © 2011-2022 走看看