在 PostgreSQL 中使用 "LIMIT OFFSET" 和 array_to_json
Using "LIMIT OFFSET" with array_to_json in PostgreSQL
我在 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;
请检查我的代码并告诉我问题出在哪里。
无需为您重写整个查询,json_agg
在这里可能更合适。
SELECT json_agg(x) AS json_feed
FROM (
SELECT
column AS "columnName", ...
FROM your_table
LIMIT 5
) AS x
我在 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;
请检查我的代码并告诉我问题出在哪里。
无需为您重写整个查询,json_agg
在这里可能更合适。
SELECT json_agg(x) AS json_feed
FROM (
SELECT
column AS "columnName", ...
FROM your_table
LIMIT 5
) AS x