ऑब्जेक्ट में कुंजियों का क्रम एक jsonb
. में शाब्दिक महत्वहीन है - वस्तु कुंजियों को वैसे भी आंतरिक रूप से क्रमबद्ध किया जाता है। (json
इस संबंध में अलग है।) देखें:
सरणी तत्वों का क्रम एक jsonb
. में (या json
) शाब्दिक महत्वपूर्ण है, यद्यपि। आपका अनुरोध सार्थक है। आप इस तरह पुन:क्रमित कर सकते हैं:
SELECT jsonb_agg(elem)
FROM (
SELECT *
FROM jsonb_array_elements(v_combined) a(elem)
ORDER BY (elem->>'ts')::int -- order by integer value of "ts"
) sub;
dbfiddle यहां
लेकिन यह अधिक कुशल होगा सरणी को पहले ऑर्डर करने के लिए इसे असाइन करना:
...
DECLARE
v_combined jsonb;
BEGIN
SELECT INTO v_combined jsonb_agg(elem)
FROM (
SELECT ts, json_agg(data_table_1) AS j
FROM data_table_1
WHERE fk_id = v_id
UNION ALL
SELECT ts, json_agg(data_table_2)
FROM data_table_2
WHERE fk_id = v_id
ORDER BY ts
) sub;
...
सबक्वायरी से पंक्तियों के क्रम पर
मानक SQL में पंक्तियों का क्रम एक सबक्वेरी (या कोई टेबल एक्सप्रेशन) में भी महत्वहीन है। लेकिन पोस्टग्रेज में उपश्रेणियों में पंक्तियों के क्रम को अगले स्तर तक ले जाया जाता है। तो यह सरल प्रश्नों में काम करता है। यह दस्तावेज भी है। :
यदि आप इस पर भरोसा नहीं कर सकते हैं या नहीं कर सकते हैं, तो एक सुरक्षित विकल्प है:ORDER BY
जोड़ें कुल समारोह के लिए ही। यह और भी छोटा है:
SELECT INTO v_combined jsonb_agg(elem ORDER BY (elem->>'ts')::int)
FROM jsonb_array_elements(v_combined) a(elem);
लेकिन यह आमतौर पर धीमा होता है ।