首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在左连接上应用if row exist函数

在左连接上应用if row exist函数
EN

Stack Overflow用户
提问于 2017-08-02 15:57:01
回答 3查看 44关注 0票数 3

我使用left join组合了3-6个表。下面是一些关于from子句的代码示例

代码语言:javascript
复制
     FROM ip_ucp_01
LEFT JOIN ip_lt_01 
       ON ip_ucp_01.time = ip_lt_01.time 
      AND ip_ucp_01.date = ip_lt_01.date
LEFT JOIN ip_le 
       ON ip_lt_01.time = ip_le.time 
      AND ip_lt_01.date = ip_le.date
LEFT JOIN ip_lmiv_01 
       ON ip_le.time = ip_lmiv_01.time 
      AND ip_le.date = ip_lmiv_01.date
LEFT JOIN ip_cwg 
       ON ip_lmiv_01.time = ip_cwg.time 
      AND ip_lmiv_01.date = ip_cwg.date
LEFT JOIN ip_mtu_01 
       ON ip_cwg.time = ip_mtu_01.time 
      AND ip_cwg.date = ip_mtu_01.date

如果第二个表和第三个表中没有行,则不会显示前面的表等数据。我需要检查第二个表上的行是否存在。如果是,它将使用左连接第二个表,如果不是,它将在第三个表上使用左连接,依此类推。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-02 19:28:31

如果你只连接你的第一个表呢?如下所示:

代码语言:javascript
复制
     FROM ip_ucp_01
LEFT JOIN ip_lt_01 
       ON ip_ucp_01.time = ip_lt_01.time 
      AND ip_ucp_01.date = ip_lt_01.date
LEFT JOIN ip_le 
       ON ip_ucp_01.time = ip_le.time 
      AND ip_ucp_01.date = ip_le.date
LEFT JOIN ip_lmiv_01 
       ON ip_ucp_01.time = ip_lmiv_01.time 
      AND ip_ucp_01.date = ip_lmiv_01.date
LEFT JOIN ip_cwg 
       ON ip_ucp_01.time = ip_cwg.time 
      AND ip_ucp_01.date = ip_cwg.date
LEFT JOIN ip_mtu_01 
       ON ip_ucp_01.time = ip_mtu_01.time 
      AND ip_ucp_01.date = ip_mtu_01.date

由于您只在日期和时间上加入,这不就是您想要的吗?

票数 0
EN

Stack Overflow用户

发布于 2017-08-02 16:01:38

我认为LEFT JOIN不会像您所要求的那样工作,因为如果父表中没有条目,您将无法从孙子表中获取数据。

在我看来,您可以使用Count (不是最佳实践)来简单地使用用例,但它会解决您的问题。

票数 0
EN

Stack Overflow用户

发布于 2017-08-02 16:03:25

您可以对这些JOIN使用单独的SELECT查询,然后使用UNION (使用DISTINCT)将它们全部合并到一个查询中,例如:

代码语言:javascript
复制
SELECT DISTINCT column_name
FROM (
 SELECT column_name
 FROM ip_ucp_01
  LEFT JOIN ip_lt_01 ON ip_ucp_01.time = ip_lt_01.time AND ip_ucp_01.date =   ip_lt_01.date
  LEFT JOIN ip_le ON ip_lt_01.time = ip_le.time AND ip_lt_01.date = ip_le.date;

  UNION

  SELECT column_name
  FROM ip_ucp_01
  LEFT JOIN ip_lmiv_01 ON ip_ucp_01.time = ip_lmiv_01.time AND ip_ucp_01.date =   ip_lmiv_01.date

) a;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45454834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档