在PostgreSQL中将“ LIMIT OFFSET”与array_to_json一起使用

时间:2019-02-13 10:54:13

标签: sql postgresql sql-limit

在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;

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

1 个答案:

答案 0 :(得分:1)

在不为您重写整个查询的情况下,json_agg在这里可能更合适。

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