Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL-内部使用限制连接两个表_Sql_Postgresql - Fatal编程技术网

PostgreSQL-内部使用限制连接两个表

PostgreSQL-内部使用限制连接两个表,sql,postgresql,Sql,Postgresql,我看到过一篇几乎与我的问题一致的帖子,但我的具体问题是我需要对第三个表/查询设置一个限制,例如限制15。有没有一个简单的方法来实现这一点?谢谢 编辑 我的SQL SELECT语句如下所示: SELECT t2.name AS user_name, t3.name AS artist_name FROM tbl1 t1 INNER JOIN tbl2 t2 ON t1.t1able_id = t2.id INNER JOIN (SELECT * FROM tbl3 WHERE ar

我看到过一篇几乎与我的问题一致的帖子,但我的具体问题是我需要对第三个表/查询设置一个限制,例如限制15。有没有一个简单的方法来实现这一点?谢谢

编辑

我的SQL SELECT语句如下所示:

SELECT t2.name AS user_name, t3.name AS artist_name
FROM tbl1 t1
    INNER JOIN tbl2 t2 ON t1.t1able_id = t2.id
    INNER JOIN (SELECT * FROM tbl3 WHERE artist_id = 100 limit 15) t3
        ON t2.id = t3.artist_id
WHERE t1.kind = 'kind'
澄清一下:这只是连接两个表的问题,但第二个表有两种状态。第一个状态作为普通用户,下一个状态作为艺术家,都使用相同的表,例如用户。

尝试此查询:

select *
from
    tableA a
        inner join
    tableB b
        on a.common = b.common
        inner join 
    (select * from tableC order by some_column limit 15) c
        on b.common = c.common

几天前,我搜索了这样的答案,Postgresql提供了使用rank顺利完成的功能。 我的目标是在商业公司开始第一次破产程序之前,获得最后3份提交的年度报告文件

SELECT * FROM
(
    SELECT r.id, f.id AS id_file, f.file_date, min(p.process_started) AS "first_process_started",
    rank() OVER (PARTITION BY r.id ORDER BY f.file_date DESC) AS "rank"
    FROM registry r
      INNER JOIN files f ON (r.id = f.id_registry)
      INNER JOIN processes p ON (r.id = p.id_registry)
    WHERE 
      r.type = 'LIMITED_LIABILITY_COMPANY'
      AND f.file_type = 'ANNUAL_REPORT')
      AND p.process_type = ('INSOLVENCY')
    GROUP BY r.id, f.id, f.file_date
    HAVING f.file_date <= min(p.process_started)
) AS ranked_files
WHERE rank <= 3

发布您的SQL以便我们查看。表2中是否有主键?t2.id表示普通用户,t2.artist_id表示普通用户的艺术家?对于一个普通用户,存在多个艺术家?如果您愿意,我们可以使用此来播放,您可以更正我这是使用限制时编辑的内容,您还应申请订单,否则结果是随机的。谢谢您的建议。已编辑查询。您也可以使用“最大”或“最小”来限制特定表。对不起,我刚刚意识到它不是使用三个表,而是使用两个表。我已经对我的问题进行了更具体的编辑。@KeesSonnema根据我的理解,聚合函数(如MAX-MIN)将只返回一行,它不是限制的替代函数。。as limit将结果集限制为指定的数目。