SQL JOIN和计数而无需两次计算ID

时间:2018-11-19 10:32:13

标签: mysql

我试图加入一个表并获得一个计数,但是我不能在表中为该计数两次计算ID。

表1:

ID animal
-- ------
 1    dog
 2    dog
 3    cat
 4    cat
 5    dog

表2:

ID
--
 2
 2
 3
 5
 5

我需要计算表2中每种动物的数量。我可以将其加入并将ID更改为动物类型,然后对每种动物进行计数。

问题是每个ID只能计数一次。所以预期的输出将是。

dog:2
cat:1

我的输出是

dog:4
cat:1

4 个答案:

答案 0 :(得分:1)

尝试如下

CustomAppender appender = new CustomAppender() {

        @Override
        protected void sendBuffer() {
            //my counter here
            super.sendBuffer();
        }
    };

答案 1 :(得分:0)

您可以使用count distinct id

在下面尝试
select b.animal,count(distinct a.id) from table2 a
inner join table1 b on a.id=b.id
group by b.animal

答案 2 :(得分:0)

尝试一下:

SELECT t1.animal AS "Animal", COUNT(DISTINCT t1.ID) AS "No. of Animals"
FROM TABLE2 t2, TABLE1 t1
WHERE t2.ID = t1.ID
GROUP BY t1.animal

答案 3 :(得分:0)

您可以在此处尝试嵌套选择。

SELECT 
t.animal, 
COUNT(t.ID) AS Count
FROM
(SELECT DISTINCT a.animal, b.ID FROM table1 a INNER JOIN table2 b ON a.ID = b.ID)t
GROUP BY t.animal

this is tested image