代码之家  ›  专栏  ›  技术社区  ›  Roby Sottini

SQL:如何使用WHERE而不是外部联接

  •  0
  • Roby Sottini  · 技术社区  · 5 年前

    我使用的是一个名为Centura Gupta的旧数据库,它没有 join where 取代 outer join 我需要:

    SELECT *
    FROM table1
    OUTER JOIN table2
    ON table1.id_person table2.id_person;
    

    我认为 哪里 只能替换 inner join :

    SELECT *
    FROM table1
    WHERE table1.id_person = table2.id_person;
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Jiacheng Gao    5 年前

    您可以尝试使用子查询而不是联接

    SELECT *
    FROM table1 t1
    WHERE id_Person IN 
    (
    SELECT id_Person
    FROM table2 
    )
    
        2
  •  0
  •   Suffer Surfer    5 年前

    当我不知道连接时,我使用了这种实现。可能不完全正确,但可以让你接近:

    SELECT *
    FROM table1 t1, table2 t2
    WHERE t1.id_Person=t2.id_Person;
    
        3
  •  0
  •   Russell Fox    5 年前

    我不知道那个特定的数据库,但您可以使用相关子查询来获取“连接”数据。这将从中提取所有记录 table1 以及 table2 ,或为空 whatever4 whatever5 如果没有匹配 id_person 在里面 表2 :

    SELECT t1.whatever1
        , t1.whatever2
        , t1.whatever3
        , (SELECT whatever4 FROM table2 AS t2 WHERE t2.id_person = t1.id_person) AS whatever4
        , (SELECT whatever5 FROM table2 AS t2 WHERE t2.id_person = t1.id_person) AS whatever5
    FROM table1 AS t1
    
        4
  •  0
  •   Steve Leighton    5 年前

    '名为Centura Gupta的旧数据库'
    也许你的意思是 -这绝对不是“旧的”。
    您可能正在运行一个“旧”版本的SQLBase,但现在它已升级到v12。2本机64位,当然支持外部联接。
    如果要使用ANSI外部联接,请在服务器端Sql中指定“ANSIJoinSyntax=1”。伊尼

    转到此处了解更多SQLBase连接语法: Gupta SQLBase Manuals

    本机Gupta外部联接:


    来自表1 t1、表t2

    ANSI外部连接:

    SELECT t1.person_id, t2.person_id   
    From table1 t1
    Left Outer Join table2 t2 ON t1.id_person = t2.id_person
    Where <what ever filter you want>
    

    转到此处了解更多SQLBase连接语法: Gupta SQLBase手册