【问题标题】:How to select from table limit per column same values X results如何从每列相同值 X 结果的表限制中进行选择
【发布时间】:2019-03-30 15:57:45
【问题描述】:

我的桌子是:

id   uid  art_id  
---|-----|--------
1  | 10  |  11   |
2  | 11  |  23   | 
5  | 10  |  16   | 
3  | 10  |  13   | 
4  | 11  |  59   | 
6  | 11  |  36   |
7  | 11  |  55   | 
8  | 13  |  68   | 

我需要从表中从每个 uid 中选择两个结果 art_id,但按行顺序最多选择两个。

更新:我有一个 CCA 19m 行的大数据库,需要从每个用户中选择最后两篇文章(每个 SQL 请求限制用户 200 个)。按 uid 排序

结果是:

id   uid  art_id  
---|-----|--------
1  | 10  |  11   |
5  | 10  |  16   | 
2  | 11  |  23   | 
4  | 11  |  59   | 
8  | 13  |  68   | 
3  | 10  |  13   |
6  | 11  |  36   | 
7  | 11  |  55   | 

【问题讨论】:

  • 。 .我不明白你的问题。您想要的结果有两行以上的用户。

标签: mysql sql


【解决方案1】:
SELECT MOD (ROW_NUM, 2) + TRUNC (ROW_NUM, 2) AS GROUPBY2,
     ROW_NUM,
     ID,
     UID,
     ART_ID
FROM (SELECT ROW_NUMBER ()
                OVER (PARTITION BY UID ORDER BY UID DESC)
                ROW_NUM,
             ID,
             UID,
             ART_ID
        FROM TABLE )
ORDER BY GROUPBY2

【讨论】:

    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多