bạn có thể sử dụng một lựa chọn phụ không?
postgres=# select ar[1], ar[2] from (select string_to_array('a b c', ' ') ar) as sq;
ar | ar
----+----
a | b
(1 row)
Điều này vẫn yêu cầu bạn trích xuất rõ ràng từng cột (giống như bạn đã làm). Nếu có nhiều phần tử hơn trong mảng được trích xuất, chúng sẽ bị mất và nếu có ít hơn, thì các cột bị thiếu sẽ chỉ là NULL
.
CHỈNH SỬA:Tôi nghĩ rằng tôi sẽ gói toàn bộ điều trong một lựa chọn con; lựa chọn con bên trong tạo ra hàng mong muốn , với lựa chọn bên ngoài chiếu truy vấn bên trong vào các cột mong muốn :
SELECT subquery1.a, subquery1.b, subquery1.c,
myfunction_result[1], myfunction_result[2]
FROM ( SELECT table1.a, table1.b, table1.c,
MyFunction(table1.a, table1.b, table1.c) as myfunction_result
FROM table1 INNER JOIN table2 using(b)
WHERE ... GROUP BY table1.a, table1.b, table1.c
) AS subquery1;
Lựa chọn bên trong và bên ngoài sẽ tương quan đúng với table1
tài liệu tham khảo.