【问题标题】:Using "LIMIT OFFSET" with array_to_json in PostgreSQL在 PostgreSQL 中使用带有 array_to_json 的“LIMIT OFFSET”
【发布时间】:2019-07-07 04:27:10
【问题描述】:

我在 postgresql 中使用限制偏移时遇到问题。尽管我指定了限制偏移值,但它列出了所有数据。

SELECT 
        array_to_json(
            array_agg(
                json_build_object(
                    'nickName', u.username,
                    'date', to_char(p.create_date, 'DD/MM/YYYY'),
                    'time', to_char(p.create_date, 'HH24:MM'),
                    'questionId', p.post_id,
                    'questionContent', p.content,
                    'status', CASE WHEN p.status = 0 THEN 'Waiting for approval' WHEN p.status = 1 THEN 'Approved' WHEN p.status = 0 THEN 'Reject' END,
                    'rejectReason', p.reject_reason,
                    'answerUrl', p.seo_url
                )
            )
        )
  INTO _posts
FROM posts p
  INNER JOIN users u ON u.user_id = p.user_id 
WHERE p.user_id = _user_id
LIMIT 5 OFFSET _page * 5;

请检查我的代码并告诉我问题出在哪里。

【问题讨论】:

  • 不相关,但是:create table new_table as select ... 优于非标准的select ... into new_table

标签: sql postgresql sql-limit


【解决方案1】:

无需为您重写整个查询,json_agg 在这里可能更合适。

SELECT json_agg(x) AS json_feed
FROM (
    SELECT
        column AS "columnName", ...
    FROM your_table
    LIMIT 5
) AS x

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 2012-08-25
    • 2013-04-13
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    相关资源
    最近更新 更多