我的数据库名为:(training_session)我尝试从我的数据中打印出一些信息,但我不想有任何重复。不知何故,我明白了,有人能告诉我我哪里做错了吗?
SELECT DISTINCT athlete_id AND duration FROM training_session
SELECT DISTINCT athlete_id, duration FROM training_session
如果我只使用一列,但当我添加另一列时,它工作得很好。它不起作用。
发布于 2019-09-18 02:21:58
我想你误解了DISTINCT的用法。使用DISTINCT和GROUP BY之间有很大的区别。两者都有某种目标,但它们有不同的目的。
如果希望显示一系列列而不重复,则可以使用DISTINCT。这意味着你不关心计算或分组函数聚合。如果您不断在SELECT中添加更多列(如果表中有许多列),DISTINCT将显示不同的结果
如果您想在某个选定的列上“区分”显示,可以使用GROUP BY,并使用group函数来计算相关数据。因此,如果您想使用GROUP函数,则可以使用group BY。请检查您可以在此链接中使用的组函数。https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html
编辑1:看起来你正在尝试获取某个运动员的“最新”信息,如果没有ID,我将假设当前的情况。
以下是我的替代解决方案:
SELECT a.athlete_id ,
( SELECT b.duration
FROM training_session as b
WHERE b.athlete_id = a.athlete_id -- connect
ORDER BY [latest column to sort] DESC
LIMIT 1
) last_duration
FROM training_session as a
GROUP BY a.athlete_id
ORDER BY a.athlete_id
这种语法称为IN-SELECT子查询。在LIMIT 1的帮助下,它显示了最上面的记录。In-select子查询必须返回1条记录,否则将显示错误。
发布于 2019-09-18 02:19:18
MySQL的DISTINCT子句用于筛选出重复的记录集。
如果查询是SELECT DISTINCT athlete_id FROM training_session,则输出将为:
athlete_id
----------
1
2
3
4
5
6
一旦您向查询中添加了另一列(在您的示例中,名为duration的列),则查询产生的每条记录都是唯一的,因此您得到的结果也是唯一的。换句话说,查询工作正常。
https://stackoverflow.com/questions/57983612
复制相似问题