我知道这对stackoverflow社区来说是一个非常简单的问题。但是,我在其他网站上都没有在stackoverflow上找到答案。
让我解释这个问题。
我希望查询以超过1个西班牙球员的方式选择团队。
那些是团队(Equigos)和球员(Jugadores)表:https://i.stack.imgur.com/qmc0j.jpg
我的查询:
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名西班牙球员。我必须在最初的查询中缺少一些东西。我不确定我的有子句tbh。
您可以在下面尝试使用子句
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;
如果GROUP BY
和HAVING
在 subquery 中:
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;
);