【问题标题】:Select only one result field from two joined tables从两个连接表中仅选择一个结果字段
【发布时间】:2020-05-28 09:58:12
【问题描述】:

我试图从两个表中只选择一个字段。而不是c.cust_names.supp_name 只有一个字段名称与customersupplier 表的竞争。

SELECT o.id, o.order_nr, o.cust_suppl, c.cust_name, s.supp_name
FROM   Orders AS o LEFT OUTER JOIN
       customer AS c ON o.id = c.id LEFT OUTER JOIN
       supplier AS s ON o.id = s.id

当前输出:

id    order_nr   cust_suppl   cust_name   supp_name
1       1100       c            Cust_A      NULL    
2       1101       c            Cust_B      NULL
3       2100       s            NULL        Suppl_A
4       2101       s            NULL        Suppl_B 

【问题讨论】:

  • 您想如何进行选择?基于cust_suppl?

标签: sql join


【解决方案1】:

你可以解码:

SELECT o.id, o.order_nr, o.cust_suppl
       , decode( c.cust_name, null, s.supp_name, c.cust_name )
FROM   Orders AS o LEFT OUTER JOIN
       customer AS c ON o.id = c.id LEFT OUTER JOIN
       supplier AS s ON o.id = s.id

或使用案例:

SELECT o.id, o.order_nr, o.cust_suppl
       , case when c.cust_name is null then s.supp_name else c.cust_name end
FROM   Orders AS o LEFT OUTER JOIN
       customer AS c ON o.id = c.id LEFT OUTER JOIN
       supplier AS s ON o.id = s.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多