从两个表中计数,并在MYSQL中显示同一个表中的计数

从两个表中计数,并在MYSQL中显示同一个表中的计数,mysql,Mysql,我有两个带有主键和列(名称颜色)的表 我试过了 SELECT ( SELECT COUNT(*) FROM table1 ) AS count1, ( SELECT COUNT(*) FROM table2 ) AS count2 但这给了 count1|count2| 3 |3 | 我怎样才能得到像这样的颜色分组的输出 |Color|count1| count

我有两个带有主键和列(名称颜色)的表

我试过了

SELECT  (
        SELECT COUNT(*)
        FROM   table1
        ) AS count1,
        (
        SELECT COUNT(*)
        FROM   table2
    ) AS count2
但这给了

count1|count2| 
 3    |3     |
我怎样才能得到像这样的颜色分组的输出

|Color|count1| count2
|red  | 1    |2
|green| 1    |1
|blue |1     |0

您好,您可以使用union和group by

select id,color, sum(coun_t) as counts from (
    (SELECT id,color,count(*) as coun_t FROM `table1` group by color)
          union 
    (SELECT id,color,count(*) as coun_t FROM `table2` group by color)
 ) as p group by color order by id asc

您好,您可以使用union和group by

select id,color, sum(coun_t) as counts from (
    (SELECT id,color,count(*) as coun_t FROM `table1` group by color)
          union 
    (SELECT id,color,count(*) as coun_t FROM `table2` group by color)
 ) as p group by color order by id asc

结果集中的id列没有多大意义。结果集中的id列没有多大意义。
union
可以删除重复的行,如果出现这种情况,总和将不正确,此答案需要使用
union all
。此外,该问题要求的不是单个总和,而是两列。
union
可以删除重复的行,如果出现这种情况,总和将不正确,此答案需要使用
union all
。此外,该问题不要求一个单一的总和,而是两列。
select id,color, sum(coun_t) as counts from (
    (SELECT id,color,count(*) as coun_t FROM `table1` group by color)
          union 
    (SELECT id,color,count(*) as coun_t FROM `table2` group by color)
 ) as p group by color order by id asc