假設我有一張桌子:
-------------- -------------- ------ -----
| ID | Score | email | add |
-------------- -------------- ------ -----
| 123 | 88 | 123@gmail.com | somewhere |
| 456 | 77 | 123@gmail.com | somewhere |
| 789 | 88 | 123@gmail.com | somewhere |
| 111 | 77 |123@gmail.com | somewhere |
| 555 | 77 | 123@gmail.com | somewhere |
|444 | 88 | 123@gmail.com | somewhere
| 222 | 77 | 123@gmail.com | somewhere |
| 333 | 88 |123@gmail.com | somewhere |
我的問題是可以選擇Score列并且只列印前 388和77得分?
我試過了,但似乎只給我 3 88 分
SELECT Score
FROM Table_Name
WHERE Score = '88' OR Score = '77'
LIMIT 3
uj5u.com熱心網友回復:
首先過濾表格,以便只回傳具有您想要的分數的行,然后使用ROW_NUMBER()視窗函式對每個行進行排名,Score以便ID您可以過濾掉超過每組前 3 的行:
SELECT ID, Score, email, add
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Score ORDER BY ID) rn
FROM Table_Name
WHERE Score = '88' OR Score = '77'
)
WHERE rn <= 3;
對于不支持視窗函式的 3.25.0 之前的 SQLite 版本,請使用相關子查詢:
SELECT t1.*
FROM Table_Name t1
WHERE t1.Score = '88' OR t1.Score = '77'
AND (SELECT COUNT(*) FROM Table_Name t2 WHERE t2.Score = t1.Score AND t2.ID <= t1.ID) <= 3;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/442092.html
標籤:sqlite 数数 where子句 窗函数 sql 限制
