以下查询提供了我想要的结果:
SELECT DISTINCT `unique_id`, count(`unique_id`) AS TotalCount
FROM `table1`
GROUP BY `unique_id`;
它为我提供了独特的unique_id列和一个计数,这正是我想要的输出。
Output:
unique_id | TotalCount
123 | 2
444 | 56
但是,我有另一个表,其值比table1少,但我想从查询中获得相同的信息,这意味着:
SELECT DISTINCT `unique_id`, count(`unique_id`) AS DifferentCount
FROM `table2`
GROUP BY `unique_id`;
现在我想将两个查询合并为一个,这意味着,我想要一个输出:
Output:
unique_id | TotalCount | DifferentCount
123 | 2 | 1
444 | 56 | 30
我该怎么做?感谢。
答案 0 :(得分:2)
请勿将select distinct
与group by
一起使用。使用它是非常非常正确的。
我建议你这样做:
select unique_id, sum(cnt1) as cnt1, sum(cnt2) as cnt2
from ((select unique_id, count(*) as cnt1, 0 as cnt2
from table1
group by unique_id
) union all
(select unique_id, 0 as cnt1, count(*) as cnt2
from table2
group by unique_id
)
) t12
group by unique_id;
这将确保您从两个表中获取所有ID。
答案 1 :(得分:1)
你可以做到
select uid, count(itm1) cnt1, count(itm2) cnt2 from
( select unique_id uid, 1 itm1, null itm2 from table1
union all
select unique_id, null, 1 from table2 ) both
group by uid