代码之家  ›  专栏  ›  技术社区  ›  czuroski

Informix查询异常

  •  2
  • czuroski  · 技术社区  · 16 年前

    查询1(返回65行)-

     select ...  
        from table1, table2, outer table3, outer table4
       where table1.id = table2.id
         and table1.id = table3.id
         and table1.id = table4.id 
         and .....
    

    查询2(返回62行)-

    select ....
    from table1 inner join table2 on table1.id = table2.id
    left outer join table3 on table1.id = table3.id
    left outer join table4 on table1.id = table4.id
    where .....
    

    1 回复  |  直到 11 年前
        1
  •  2
  •   Jonathan Leffler    16 年前

    WHERE子句的内容可能是其中的一个因素。第一种表示法,Informix风格的外部连接表示法,是非标准的,并且具有相当特殊的语义(这是礼貌的)。第二种表示法是具有规定语义的ISO标准外部联接。

    使用Informix样式的联接,内部联接的表对中的所有行,只要在WHERE子句中的任何过滤器中幸存,并且只在它们的列上,都将在结果集中返回。如果在WHERE子句中对外部联接表中的列或内部表与外部表之间的列有筛选器,则这些筛选器可能会从结果集中删除一些可能的行,但结果的内部联接部分仍将显示为带null的扩展。解释起来极其复杂。这多少有点道理,但是 结果不仅仅是基本连接集限制的投影

    您能确认WHERE子句在表3和表4的列中包含一些条件吗?

    推荐文章