我有两个这样的SQL表:

T1

Animal   Name
Cat      Paul
Cat      Miau
Cat      Paul
Cat      Peter


T2

Legs   Name
4      Paul
4      Miau
3      Paul
4      Peter


我想要的是这样的一张桌子:

Animal   Legs   Name
Cat       4     Miau
Cat       4     Peter


我希望所有动物的腿都具有特定数量,但是当我们有两只同名的猫时,我不想。

我试图做这样的事情:

select  a.animal, b.legs, a.name
from animallistA as a join animallistB as b
on a.name = b.name
where b.legs = 4 and not b.legs = 3
group by a.animal, b.legs, a.name


如果我说where b.legs = 4,我也会收到'Paul',但如果我说where b.legs = 4 and not b.legs = 3,我什么也收不到。

有没有一种方法不接收同名和四只腿的猫,但是不接收同名但四只或更少(或更多)腿的猫。

最佳答案

据我了解您的问题,我建议以下查询:

SELECT A.ANIMAL, A.NAME, B.LEGS
FROM ANIMALLISTA A
INNER JOIN ANIMALLISTB B ON A.NAME = B.NAME
LEFT JOIN (SELECT NAME, COUNT(*) AS RC FROM ANIMALLISTB GROUP BY NAME) C ON A.NAME = C.NAME
WHERE B.LEGS=4
 AND C.RC=1


输出:

ANIMAL  NAME    LEGS
Cat Miau    4
Cat Peter   4

关于mysql - 如何选择没有特定条目的条目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45999750/

10-17 01:21