Sql 选择具有>;1名西班牙球员
我知道这对于StackOverflow社区来说是一个非常简单的问题。然而,我在StackOverflow和其他网站上都没有找到我的问题的答案 让我解释一下这个问题 我想要一个查询来选择有超过1名西班牙球员的球队 这些是球队(装备)和球员(jugadores)表: 我的问题是:Sql 选择具有>;1名西班牙球员,sql,oracle,select,group-by,subquery,Sql,Oracle,Select,Group By,Subquery,我知道这对于StackOverflow社区来说是一个非常简单的问题。然而,我在StackOverflow和其他网站上都没有找到我的问题的答案 让我解释一下这个问题 我想要一个查询来选择有超过1名西班牙球员的球队 这些是球队(装备)和球员(jugadores)表: 我的问题是: SELECT nombre FROM equipos WHERE id IN ( SELECT id_equipo FROM
SELECT
nombre
FROM
equipos
WHERE
id IN (
SELECT
id_equipo
FROM
jugadores
WHERE
upper(procedencia) = 'SPAIN'
)
GROUP BY nombre
HAVING COUNT(*) > 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
你可以看到猛龙队有两名西班牙球员。
我的初始查询中肯定遗漏了什么。我不确定我的HAVING子句tbh。您可以使用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;
您可以使用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;
如果子查询中有
分组依据
和拥有
,则您的版本将起作用:
如果子查询中有
分组依据
和拥有
,则您的版本将起作用:
不要在问题中包含链接,而是将示例数据作为
格式文本直接包含在问题中。不要在问题中包含链接,而是将示例数据作为格式文本直接包含在问题中。非常好。只是想澄清一下,你为什么需要加入?因为HAVING子句包含了另一个表中的条件,对吗?太好了。只是想澄清一下,你为什么需要加入?因为HAVING子句包含来自另一个表的条件,对吗?非常感谢,我没有考虑过这种方法,但它很有意义!非常感谢,我还没有考虑过这种方法,但它很有意义!