【问题标题】:Real difference on Join & implicit join [duplicate]连接和隐式连接的真正区别[重复]
【发布时间】:2023-03-05 12:55:01
【问题描述】:

我是个小问题...我认为这只是一个语义问题... 谁能解释一下这两个查询的真正区别?如果有的话……

// #1 - Query with join
SELECT DISTINCT cli.COD_CLIENTE   
FROM CLIENTI cli    
JOIN BANCHE b 
    ON b.COD_BANCA = cli.COD_BANCA    
JOIN SOA_CONO_VISIB cv 
    ON cv.COD_SOCIETA = b.SOCIETA_SOA     
    AND cv.FLAG_ENTITA_OPER = 1     
    AND cv.COD_MACRO_CLASSE <> 'RFE'      
    AND cv.DATA_FINE_OPERATIVITA IS NULL  
WHERE   cv.COD_SOCIETA = '01'  
    AND cv.COD_ENTITA = '00008';


// #2 - Query with implicit join        
SELECT DISTINCT cli.COD_CLIENTE   
FROM CLIENTI cli, BANCHE b, SOA_CONO_VISIB cv 
WHERE cv.COD_SOCIETA = '01'  
    AND cv.COD_ENTITA = '00008'
    AND b.COD_BANCA = cli.COD_BANCA
    AND cv.COD_SOCIETA = b.SOCIETA_SOA     
    AND cv.FLAG_ENTITA_OPER = 1     
    AND cv.COD_MACRO_CLASSE <> 'RFE'      
    AND cv.DATA_FINE_OPERATIVITA IS NULL;

【问题讨论】:

  • 没有区别,除了第二个更难解析以查看您是否错过了连接条件。在使用第一种语法的内部连接中,为了清楚起见,最好将谓词仅引用一个表放在 where 中。
  • 补充马丁的非常正确的答案:如果您切换到 LEFT 或 RIGHT JOIN 而不是 INNER,将会有所不同。
  • @Martin 你应该明确发布这个答案。
  • 没有区别。甚至像“一个更难解析”这样的陈述也确实是见仁见智。

标签: oracle join


【解决方案1】:

它们完全相同,使用隐式连接,您必须“手动”在表之间进行引用,而对于从许多表中选择的查询,这可能是一项过多的工作。

这里有另一个和你一样的问题,也许你可以找到其他信息。

http://www.stackoverflow.com/questions/44917/explicit-vs-implicit-sql-joins

【讨论】:

    猜你喜欢
    • 2017-10-22
    • 2023-03-15
    • 2012-03-13
    • 2013-08-25
    • 2011-05-23
    • 2011-06-10
    • 2012-12-23
    • 1970-01-01
    相关资源
    最近更新 更多