【问题标题】:How to create SQL query with two inner join's and an if case如何使用两个内连接和一个 if 案例创建 SQL 查询
【发布时间】:2021-12-21 22:13:48
【问题描述】:

我尝试使用两个内部连接和一个 if 案例共同创建一个 SQL 查询。我创建一个示例来解释我的意思:

ID Typ Case
123 AAA zzz
124 BBB yyy
125 CCC yyy
Typ1 ID1
AAA 888
BBB 999
CCC 777
ID2 Result
666 1
555 2
777 3

换句话说,查询应该: 在第一个表中搜索 ID 125,所以我得到 Typ CCC 和 Case yyy 如果 case 是 yyy,则在第二个表中搜索 Typ1 列中的 CCC,这里我得到 ID 777,然后在第三个表中搜索列 ID2 中的 777 以获得结果 3。 如果 case 不是 yyy,那么只需向我展示第一个表的结果。 结果应该是:

ID Typ Result
123 AAA No match
124 BBB No match
125 CCC 3

我希望你能理解我试图解释的内容:)

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您希望从第一个表中选择数据,并仅在适当的情况下显示其他表中的数据。所以,外连接其他表。

    select t1.id, t1.typ, t3.result
    from t1
    left outer join t2 on t2.typ1 = t1.typ and t1.case = 'yyy'
    left outer join t3 on t3.id2 = t2.id1
    order by t1.id;
    

    【讨论】:

    • 在这种情况下,左连接比内连接更好吗?
    • @gaganshera:通过内部连接,您只能获得匹配项。因此,如果我们也想要没有匹配的 t1 行,我们需要外连接。
    • 啊,是的。我忘记了那个条件:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多