• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
June's New World
知识和经验都是一点点积累的!现在努力也不晚,June加油!
博客园    首页    新随笔    联系   管理    订阅  订阅
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); 

 

posted on 2013-05-07 11:12  冬雨在路上  阅读(4633)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3