【发布时间】:2020-01-31 02:16:03
【问题描述】:
我正在尝试创建一个 SQL 查询来从数据库中选择行,按数字字段排序,但是表中有重复的条目。 该表由以下列组成。
UID - 数字唯一 ID
ACCOUNT_NAME - 账户名,不变
NICK_NAME - 用户可以随时更改
POINTS - 记录用户账户持有的积分
查询的目标是显示按积分排序的 Account_Name。但是,Account_Name 不是唯一的,可以在表中出现多次。 为了解决这个问题,我想只显示每个 Account_Name 的最新行。 这意味着在选择结果中每个 Account_Name 应该只出现一次。我试图让选择由 UID 决定,这意味着我只想要显示每个 account_name 的具有最大 UID 的行。
我尝试了以下方法,但没有得到想要的结果。 (表名ACCOUNT)
SELECT DISTINCT A.account_name , A.uid, A.points
FROM account A, account B
where A.account_name = B.account_name
and A.points > 0
and A.uid >= B.uid
order by A.points DESC;
这并没有给我想要的结果,具体来说,数据库中有一个帐户,其中存在 Points 列中具有高值的过时行。此记录显示为选择中的第一个结果,即使它已过时。
您建议如何调整此查询以选择所需的信息?
我希望这是足够的信息来解决(第一次发布问题)谢谢你的帮助:)
编辑:添加数据示例。
示例表数据: Sample Table Data
当前结果: Current Results
期望的结果: Desired Results
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。
-
当然,我会尽快更新示例。
-
是什么让唱片“过时”?您可能希望在 WHERE 子句中添加一个“and”条件,以过滤掉过时的记录。
-
当表中有另一条记录具有相同的
ACCOUNT_NAME但更大的UID时,该记录已过期