【问题标题】:Difference between these two update SQL statements in Oracle?Oracle中这两个更新SQL语句的区别?
【发布时间】:2015-08-12 04:10:14
【问题描述】:

Oracle中这两条update SQL语句有什么区别

第一:

UPDATE t1 
    SET    col1 = 'Y' 
    WHERE  EXISTS (SELECT * 
               FROM   t2 
               WHERE  t1.p1 = t2.p1 
                      AND t1.p2 = t2.p2 
                      AND t2.col3 = 'a' 
                      AND t1.p1 = 'b' 
                      AND t1.p2 = 'c') 

第二:

UPDATE t1 
SET    col1 = 'Y' 
WHERE  EXISTS (SELECT * 
           FROM   t2 
           WHERE  t1.p1 = t2.p1 
                  AND t1.p2 = t2.p2 
                  AND t2.col3 = 'a') 
   AND t1.p1 = 'b' 
   AND t1.p2 = 'c'  

【问题讨论】:

  • Sybase 中的更新 sql 应该是:update t1 set col1 = 'Y' from t1, t2 where t1.p1= t2.p1 and t1.p2= t2.p2 and t2.col3= ' a' and t1.p1='b' and t1.p2='c' 我不确定上面的 2 个 sql 是等价的还是哪个是对的...
  • 它们在结果方面是相同的,但是第二个更容易理解。

标签: sql oracle


【解决方案1】:

根本没有区别-它们具有相同的含义

【讨论】:

  • 是否相当于 update t1 set col1 = 'Y' from t1, t2 where t1.p1= t2.p1 and t1.p2= t2.p2 and t2.col3= 'a' and t1.p1='b' 和 t1.p2='c' ?
  • 不明确检查结果应该是一样的
猜你喜欢
  • 2022-01-02
  • 2014-01-05
  • 2020-11-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 2016-04-16
相关资源
最近更新 更多