我有两个这样的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/