gpt4 book ai didi

SQL - 同时限制和过滤连接

转载 作者:行者123 更新时间:2023-12-02 00:58:31 24 4
gpt4 key购买 nike

我需要一个解决以下问题的方法。我有两个表:

ids from new user (got by subquery)

+------------+
| user_id |
+------------+
| 1 |
| 4 |
| 5 |
+------------+

users (table with all users)
+------------+
| user_id |
+------------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| ... |
+------------+

我需要加入这两个表。每个新用户都需要恰好 3 个与其他用户的连接。

例如:

+----------+------+
| new_user | user |
+----------+------+
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 4 | 1 |
| 4 | 2 |
| 4 | 3 |
| 5 | 1 |
| 5 | 2 |
| 5 | 3 |
+----------+------+

问题是将条目限制为恰好 3 并排除冗余条目(如 1|1、3|3、...)

最佳答案

在 PostgreSQL 中,您可以使用 lateral 查询在子查询中检索有限数量的行。

我不知道您的主查询或子查询的确切结构,但它应该如下所示:

select t.*, ls.*
from main_table t,
lateral ( -- lateral subquery
select * from secondary_table s
where s.col1 = t.col2 -- filtering condition, if needed
fetch first 3 rows only -- limit to a max of 3 rows
) ls;

横向子查询在 main_table 中的每一行执行一次。

关于SQL - 同时限制和过滤连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52408787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com