SQL returns 多列的子查询

SQL subquery that returns more than one column

我正在尝试执行我认为很简单的 SQL 语句,但是当我尝试使用子查询时收到一条错误消息,指出多个列正在被 returned ,但我需要不止一列才能 returned。

我只是想显示两列,我的用户名和他们当前的余额

这里是 SQL:

SELECT playid, username, balance FROM plays order by playid desc limit 25

哪个 returns:

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

这正是我想要的。我的所有成员及其余额的列表。现在我需要 运行 这个查询的子查询,只有 select 具有最高 ID 的余额(最近的余额)这将 return 一个 table 像这样:

Play ID Username    Balance

593     ken     -3497

592     cass    -204

579     sam      250

最近的余额是我唯一关心的事情。当我尝试执行第二个查询时,我收到一条错误消息,提示我正在尝试 return 多列。 (我当然是)

如有任何帮助,我们将不胜感激。

编辑:您现在提到这是针对 MySQL 的。试试这个:

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);

- 这可能就是您要找的。我假设你想要最近的余额 by username based on the play 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

这按用户名对记录进行排序,按 playid 降序排列,然后 returns 每个记录的最新记录。