簡體   English   中英

返回多個列的SQL子查詢

[英]SQL subquery that returns more than one column

我正在嘗試執行我認為簡單的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

最近的平衡是我唯一關心的問題。 當我嘗試執行第二個查詢時,收到一條錯誤消息,提示我正在嘗試返回多個列。 (我當然是)

任何幫助將不勝感激。

編輯:您現在已經提到這是針對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

這將按用戶名對記錄進行排序,播放ID降序排列,然后返回每個記錄的最新記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM