我正在尝试执行我认为简单的SQL语句,但是当我尝试使用子查询表示返回了多个列时,我收到错误,但我需要返回多个列
我只是想显示两列,我的用户名和他们的当前余额
这是SQL:
SELECT playid, username, balance FROM plays order by playid desc limit 25
返回:
Play ID Username Balance
593 ken -3497
592 cass -204
591 cass -184
590 cass -164
589 ken -517
580 ken -837
579 sam 250
545 cass -134
544 cass -114
这正是我想要的。我所有成员的清单及其余额。现在我需要在此查询上运行SUBQUERY,以便仅选择具有最高Id(最新余额)的余额,这将返回如下表格:
Play ID Username Balance
593 ken -3497
592 cass -204
579 sam 250
最近的平衡是我唯一关心的事情。当我尝试执行第二个查询时,我收到一条错误消息,说我正在尝试返回多个列。 (我当然是这样)
非常感谢任何帮助。
答案 0 :(得分:0)
SELECT
p1.playid,
p1.username,
p1.balance
FROM
plays p1
JOIN
(
SELECT
MAX(playid) AS playid,
username
FROM
plays
GROUP BY
username
) p2
ON (p2.username = p1.username)
AND (p2.playid = p1.playid);
- 这可能就是你要找的东西。我假设您希望根据播放ID:
获取最新的余额按用户名SELECT
playid,
username,
balance
FROM
(
SELECT
playid,
username,
balance,
ROW_NUMBER() OVER(PARTITION BY username ORDER BY playid DESC) AS seq
FROM
plays
) base
WHERE
seq = 1
按用户名对播放顺序进行排序,然后返回每个记录的最新记录。