返回多个列的SQL子查询

时间:2016-02-14 05:05:48

标签: php sql subquery

我正在尝试执行我认为简单的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

最近的平衡是我唯一关心的事情。当我尝试执行第二个查询时,我收到一条错误消息,说我正在尝试返回多个列。 (我当然是这样)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

编辑:你现在提到这是针对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);

- 这可能就是你要找的东西。我假设您希望根据播放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

按用户名对播放顺序进行排序,然后返回每个记录的最新记录。