[英]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.