mysql按函数分组显示数据不足

gorkyyrv  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(299)

我的目的是要看看什么是最快的圈速为特定的比赛,这将是通过使用比赛名称和比赛日期确定。

SELECT lapName AS Name, lapDate AS Date, T
FROM Lap 
    INNER JOIN Race ON Lap.lapName = Race.Name
        AND Lap.lapDate = Race.Date
GROUP BY Date;

它目前只显示3个不同的种族名称,4个不同的日期,这意味着我总共有4个组合,而事实上有9个独特的种族名称,种族日期组合。
唯一的竞赛数据存储在竞赛表中。laptimes存储在lapinfo表中。
我也得到了一个关于我的组声明的警告,说它是含糊不清的,尽管它仍然运行。

zbdgwd5y

zbdgwd5y1#

你好像不需要 join 为此:

SELECT l.lapRaceName, l.lapRaceDate, 
       MIN(l.lapTime)
FROM LapInfo l
GROUP BY l.lapRaceName, l.lapRaceDate;

如果你不需要 JOIN ,在查询中输入一个是多余的。

mbzjlibv

mbzjlibv2#

首先,您的查询实际上是无效的sql。你需要使用 MIN 函数以获得最快的速度 lapTime . 而且,你必须 GROUP BY lapRaceName, raceDate 而不仅仅是 lapRaceName . 不幸的是,在这种情况下,mysql足够宽松,可以毫无错误地执行它。
另外,你也加入 LapInfoRace ,并从 LapInfo 你的别名可以在 Race . 从sql的Angular 来看,这是可以的,但这通常也很复杂:直接从 Race 表,因为它们有您要查找的名称。
最后,最好指出每列属于哪个表。这里,列队 lapTime 属于表 LapInfo ,所以让我们把它说清楚。
查询:

SELECT 
    Race.raceName,
    Race.raceDate, 
    MIN(LapInfo.lapTime)
FROM 
    Race 
    INNER JOIN LapInfo
        ON  LapInfo.lapRaceName = Race.raceName
        AND LapInfo.lapRaceDate = Race.raceDate
GROUP BY 
    Race.raceName,
    Race.raceDate
;

相关问题