首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果表不为null,则Mysql左联接计数

如果表不为null,则Mysql左联接计数
EN

Stack Overflow用户
提问于 2015-05-19 00:36:09
回答 2查看 387关注 0票数 1

我在mysql中做了一个左键查询,如下所示

代码语言:javascript
复制
    SELECT A.*,B.*,C.*,D.* 
    from TableA A 
    left join TableB B on A.id=B.id
    left join TableC C on A.id=C.id
    left join TableD D on A.id=D.id
    where
//some condition
//group by
//order by

最后的结果是数组一维的,但是有些值没有数据--例如,我有一些值B.Value1: nullC.Value1: nullB.Value2: null等等。

我在寻找,它是只计数表与数据,Eq。

  • B表对于id=20是空白的,因此这个id的结果应该是3(A、C和D)。
  • C,D表对于id=22是空白的,因此这个id的结果应该是2(A和B)

注:

  • 如果表中的1值为空,则表no具有此id的数据。
  • 表A总是有数据的
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-19 01:05:33

我不确定这是否是您正在寻找的,但我假设您想要得到一个结果与2列。在第一列中,您需要出现在A中的id,在第二列中,您需要ID出现在其中的表数。如果是这样的话.

代码语言:javascript
复制
SELECT id, count(*) as num 
FROM (
    SELECT A.id FROM TableA A
    UNION ALL
    SELECT B.id FROM TableB B
    UNION ALL
    SELECT C.id FROM TableC C
    UNION ALL
    SELECT D.id FROM TableD D
) mytables
group by id
票数 2
EN

Stack Overflow用户

发布于 2015-05-19 01:02:01

您可能需要一个使用union allgroup by的查询。

代码语言:javascript
复制
select id, count(distinct which) as NumTablesWithValue
from ((select id, value, 'a' as which from tableA) union all
      (select id, value, 'b' from tableb) union all
      (select id, value, 'c' from tablec) union all
      (select id, value, 'd' from tabled)
     ) i
group by id;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30314928

复制
相关文章

相似问题

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