我在mysql中做了一个左键查询,如下所示
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: null、C.Value1: null、B.Value2: null等等。
我在寻找,它是只计数表与数据,Eq。
id=20是空白的,因此这个id的结果应该是3(A、C和D)。id=22是空白的,因此这个id的结果应该是2(A和B)注:
发布于 2015-05-19 01:05:33
我不确定这是否是您正在寻找的,但我假设您想要得到一个结果与2列。在第一列中,您需要出现在A中的id,在第二列中,您需要ID出现在其中的表数。如果是这样的话.
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发布于 2015-05-19 01:02:01
您可能需要一个使用union all和group by的查询。
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;https://stackoverflow.com/questions/30314928
复制相似问题