SQL INNER JOIN syntax

后端 未结 7 2164
夕颜
夕颜 2020-12-01 05:16

the two bits of SQL below get the same result

SELECT c.name, o.product  
FROM customer c, order o  
WHERE c.id = o.cust_id  
AND o.value = 150  

SELECT c.na         


        
7条回答
  •  庸人自扰
    2020-12-01 05:54

    Both queries are an inner joins and equivalent. The first is the older method of doing things, whereas the use of the JOIN syntax only became common after the introduction of the SQL-92 standard (I believe it's in the older definitions, just wasn't particularly widely used before then).

    The use of the JOIN syntax is strongly preferred as it separates the join logic from the filtering logic in the WHERE clause. Whilst the JOIN syntax is really syntactic sugar for inner joins it's strength lies with outer joins where the old * syntax can produce situations where it is impossible to unambiguously describe the join and the interpretation is implementation-dependent. The [LEFT | RIGHT] JOIN syntax avoids these pitfalls, and hence for consistency the use of the JOIN clause is preferable in all circumstances.

    Note that neither of these two examples are Cartesian products. For that you'd use either

    SELECT c.name, o.product  
    FROM customer c, order o  
    WHERE o.value = 150  
    

    or

    SELECT c.name, o.product  
    FROM customer c  CROSS JOIN order o 
    WHERE o.value = 150
    

提交回复
热议问题