我知道这对于StackOverflow社区是一个非常简单的问题。但是我在其他网站上都没有在StackOverflow上找到我的问题的答案。
让我解释一下这个问题。
我希望查询选择其中有1名以上西班牙球员的球队。
这些是团队(装备)和玩家(jugadores)表:https://imgur.com/a/7BNqfmu
我的查询:
SELECT
nombre
FROM
equipos
WHERE
id IN (
SELECT
id_equipo
FROM
jugadores
WHERE
upper(procedencia) = 'SPAIN'
)
GROUP BY nombre
HAVING COUNT(*) > 1;
查询没有返回任何内容,但是当我执行测试查询以检查是否有超过1名西班牙球员的球队时,我会得到1名拥有2名西班牙球员的球队,因此我希望能在上面获得该球队查询。
测试查询返回具有2个西班牙球员的球队:
SELECT
j.nombre,
e.nombre AS equipo
FROM
jugadores j
JOIN equipos e ON j.id_equipo = e.id
WHERE
upper(procedencia) = 'SPAIN';
返回值:
Jorge Garbajosa Raptors
Jose Calderon Raptors
Sergio Rodriguez Trail Blazers
Pau Gasol Lakers
Juan Carlos Navarro Grizzlies
您可以看到猛龙队有2个西班牙球员。 我的初始查询中一定缺少某些内容。我不确定我是否有条款。
答案 0 :(得分:2)
您可以尝试使用具有having子句的以下查询
SELECT
e.nombre AS equipo
FROM
jugadores j
JOIN equipos e ON j.id_equipo = e.id
WHERE upper(procedencia) = 'SPAIN'
GROUP BY upper(procedencia), e.nombre
HAVING COUNT(j.nombre)>1;
答案 1 :(得分:2)
如果GROUP BY
和HAVING
在子查询中,您的版本将起作用:
SELECT e.nombre
FROM equipos e
WHERE e.id IN (SELECT j.id_equipo
FROM jugadores j
WHERE upper(procedencia) = 'SPAIN'
GROUP BY j.id_equipo
HAVING COUNT(*) > 1;
);