0

以下选择语句是否符合 SQL92?

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

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

4 回答 4

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 还强制进行一些纪律和基本检查:更容易避免交叉连接或部分交叉连接

于 2009-02-20T20:18:48.007 回答
1

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

于 2009-02-20T20:12:18.660 回答
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
于 2009-02-20T20:12:58.767 回答
1

是的,您显示的查询使用符合 SQL92 的语法。我的 Jim Melton 和 Alan R. Simon 的“理解新 SQL:完整指南”副本证实了这一点。

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

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

于 2009-02-20T21:43:03.717 回答