2009-02-20 32 views
0

以下select语句是否符合SQL92?sql ansi-92兼容问题

SELECT table1.id,table2.id,* FROM 表1,表2 WHERE table1.id = table2.id

SELECT table1.Num,table2.id,* FROM 表1,表2 WHERE table1的.Num = table2.id

回答

1

是的,你看使用SQL92标准的语法查询。我的吉姆梅尔顿“Understanding the New SQL: A Complete Guide”& Alan R. Simon证实了这一点。

SQL92仍然支持使用逗号语法的连接,以便与SQL89向后兼容。 据我所知,所有的SQL实现都支持逗号语法和JOIN语法连接。

在大多数情况下,SQL实现知道如何优化它们,使它们在语义(即它们产生相同的结果)和性能方面是相同的。

1

我可能是错的,但我的理解是,SQL92约定是使用JOIN语句(例如FROM table1 INNER JOIN table2)连接表。

1

不幸的是,我相信他们是,但是这种连接语法更难以阅读和维护。

我知道使用MSSQL,这两种连接方法之间没有性能差异,但哪一种更容易理解?

SELECT table1.id, table2.id,* 
FROM table1, table2 
WHERE table1.id = table2.id 


SELECT 
table1.id, 
table2.id, 
* 
FROM table1 
    INNER JOIN table2 
    ON table1.id = table2.id 
2

从StingyJack继...

SELECT 
    table1.id, 
    table2.id, 
    * 
FROM 
    table1 
    INNER JOIN 
    table2 ON table1.id = table2.id 
WHERE 
    table1.column = 'bob' 

SELECT table1.id, table2.id,* FROM table1, table2 WHERE table1.id = table2.id and table1.column = 'bob' 

凡在join?过滤器在哪里?

JOIN也迫使一些规则和基本检查:容易避免交叉连接或部分交叉连接

+0

是的......我感觉很慵懒,没有给出更多的图解答案。谢谢。 =) – StingyJack 2009-02-20 20:30:11