如何为列中的每个不同元素仅选择两行(PostgreSQL 9.3.5)

迈克五世

现在我有一个查询,看起来像这样。%s是psycopg2:

SELECT DISTINCT ON (p1.creating_user_id) p1.post_id, p1.message
    FROM posts p1
    LEFT OUTER JOIN post_relations pr1 ON pr1.post_id=p1.post_id AND pr1.receiving_user_id=%s
    WHERE p1.creating_user_id IN (SELECT ur2.user_b_id 
        FROM user_relations AS ur2 
        WHERE ur2.user_a_id=%s 
        AND ur2.friend=true)
    ORDER BY p1.creating_user_id, p1.created_utc DESC

我将如何更改此查询以返回两行以达到creation_user_id,而不是仅返回一行?有没有办法在仍然使用的同时做这件事,还是SELECT DISTINCT我必须做某种子查询?

克洛多尔多·内托(Clodoaldo Neto)

一个窗函数可以做到这一点

select post_id, message
from (
    select
        p1.post_id, p1.message,
        row_number() over(
            partition by p1.creating_user_id
            order by p1.created_utc desc
        ) as rn
    from
        posts p1
        left outer join
        post_relations pr1 on pr1.post_id = p1.post_id and pr1.receiving_user_id = %s
    where p1.creating_user_id in (
        select user_b_id 
        from user_relations
        where user_a_id = %s and friend = true
    )
) s
where rn <= 2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何定位以 1 3 5 7 或 9 结尾的每个班级?

如何重复序列:r中的1,2,3,4,5,6,1,2,3,4,5,6,7,8,9,10,7,8,9,10

如何为Razor mvc5中的每个第3列创建一行?

如何在控制台中将数组输出[3,5,7,9,.... n]转换为列表3 5 7 9 ... n

在这个选择排序代码中,我从 {8,3,5,9,2} 得到一个 {2,3,3,5} 的数组答案

将数组的元素添加为a [0],a [1] + a [2],a [3] + a [4] + a [5],a [6] + a [7] + a [8] + a [9] ...等等

要从系列中打印答案-> x ^ 3-x ^ 5 + x ^ 7-x ^ 9 +

C中{0,1,2,3,4,5,6,7,8,9}外的条件

如何为mod(3)(9)编写函数?

如何转换list1中的list = [1,2,[3,4],[5,6],7,[8,9,10]] = [1,2,3,4,5,6,7,8 ,9,10]在python中?

我想把数组 [1,2,3,4,5,6,7,8,9,10,11] 变成数组 [1,2,3,4,5,6,7,8,9,1 ,0,1,1] 仅使用此算法

批处理文件中cp%1%2%3%4%5%6%7%8%9的含义是什么

图像网格:台式机为5 x 5,而移动设备为3 x 9

在Xcode 9 beta 5中激活“关注选择之后”?

GLM:如何创建9列3行的矩阵

重新排列 PHP 数组,将 1、2、3、4、5、6、7、8、9 重新排序为 1、4、7、2、5、8、3、6、9

如何使用正则表达式在lookhead中给出范围,例如^(?=(.*[az]){1,3})(?=.*[0-9]).{2,5}$

从PHP的3个数组中选择9个元素

我如何设计一个以1开始并以0(1,2,3,4,5,6,7,8,9,0)结束的int循环

如何将 Raspberry pi 3 Model B+ 与 P10 户外单红色 LED 模块连接 (p10-smd-4s-v9-5)

生成此序列的通用函数:R中的前n = 100个数字为1 4 3 6 5 8 7 10 9 12

如何将9x9阵列拆分为9个3x3组件

Javascript - 找到 1-4-7, 2-5-8, 3-6-9 iretartions?

如何在 android RatingBar 上将“9/10”变成“4.5/5”?

如何使用休眠验证器检查5或9的长度?

如何舍入到最接近的0、5或9整数

下划线或lazy.js映射(0,1,2,3,4)+(1,2,3,4,5)->(1,3,5,7,9)

如何在 Ubuntu 19.10 中安装 qtbase-abi-5-9-5?

我该如何为创建的每个小时列(从上午9点到下午5点)分配一个小时?