简体   繁体   English

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

[英]Count from two tables and display the counts in the same table in MYSQL

I have two tables with a primary key and a column(name color) 我有两个带有主键和列的表(名称颜色)

Table1
|Color| 
|red  |
|green|
|blue |

Table2
|Color| 
|red  |
|red  | 
|green| 

I tried 我试过了

SELECT  (
        SELECT COUNT(*)
        FROM   table1
        ) AS count1,
        (
        SELECT COUNT(*)
        FROM   table2
    ) AS count2

but this gives 但这给

count1|count2| 
 3    |3     |

How can i get an output grouped with the color like, 我如何获得按颜色分组的输出,

|Color|count1| count2
|red  | 1    |2
|green| 1    |1
|blue |1     |0
SELECT
      color
    , MAX(CASE WHEN tabl = 'T1' THEN count_of END) count1
    , MAX(CASE WHEN tabl = 'T2' THEN count_of END) count2
FROM (
      SELECT 'T1' tabl, Color, COUNT(*) count_of FROM table1 GROUP BY Color
      UNION ALL
      SELECT 'T2' tabl , Color , COUNT(*)        FROM table2 GROUP BY color
     ) d
GROUP BY color

Hi sri simply you can use union and group by 您好斯里兰卡,您可以使用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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM