2

不幸的是,我目前无法访问 Ingres 数据库,我只是想知道适用于标准 SQL 的内部连接语法是否也适用于 Ingres?我也想知道内部连接的等价物。

例如,以下两条 SQL 语句是否有效?

声明 1:

SELECT a.Value1,
       a.Value2,
       b.Value3
FROM   Tabletype1 a, Tabletype2 b, Tabletype3 c
WHERE a.Value1 = b.Value4
AND   b.Tabletype3_Num = c.Tabletype3_Num
AND  p.Value5 = 'Randomvalue'
AND b.Value3 > 20
      AND (a.Tabletype1Format = 'Random' OR a.Tabletype1Format = 'Random1')

声明 2:

SELECT a.Value1,
       a.Value2,
       b.Value3
FROM   Tabletype1 a
       INNER JOIN Tabletype2 b
            ON  a.Value1 = b.Value4
       INNER JOIN Tabletype3 c
            ON  b.Tabletype3_Num = c.Tabletype3_Num
WHERE  c.Value5 = 'Randomvalue'
       AND b.Value3 > 20
       AND (a.Tabletype1Format = 'Random' OR a.Tabletype1Format = 'Random1')
4

2 回答 2

4

在回答 OP 实际提出的问题时,Ingres 绝对肯定完全支持两种形式的连接规范,并且在我曾经费心查看的每一种情况下,它都提供了完全相同的查询计划。

所以我的底线答案是做你认为在你的情况下更可取的事情。它会正常工作。

于 2011-01-17T11:17:15.323 回答
3

这两种形式在 Ingres 中都能正常工作,尽管您会欣赏 SQL92 ANSI 语法更适合于

  1. 可读性
  2. 明晰
  3. 帮助查询优化器知道连接真正发生在哪里

这个问题与SQL Inner Join 语法非常相似

于 2011-01-16T21:24:36.003 回答