在不使用 DISTINCT 子句的情况下获得不同的结果



我有以下代码,我能够通过使用 DISTINCT 获得我想要的结果,但是有没有办法在不使用 DISTINCT 的情况下获得相同的结果?

SELECT S.name, COUNT(DISTINCT R.peopleID) AS numathletes
FROM Sports S
JOIN Results R ON S.ID = R.sportID
WHERE R.result >= S.record
GROUP BY S.name;

至于我正在使用的表格:
表 S 具有 ID、名称、记录
表 R 有人员 ID、竞赛 ID、运动 ID、结果

是的,这是可能的。

这是一个变体

SELECT name, COUNT(*) AS numathletes
FROM
(
    SELECT S.name, R.peopleID
    FROM 
        Sports S
        JOIN Results R ON S.ID = R.sportID
    WHERE R.result >= S.record
    GROUP BY S.name, R.peopleID
) AS T
GROUP BY name;

这是一个更详细的变体,可以清楚地显示计算是如何完成的。

您应该尝试检查您的数据和硬件哪个变体更快。他们很可能会执行相同的操作。

相关内容

最新更新