PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để LIÊN KẾT một danh sách các bảng được truy xuất từ ​​một bảng khác bằng một truy vấn duy nhất?

Để tự động hóa việc này, bạn cần SQL động

CREATE OR REPLACE FUNCTION f_multi_select()
  RETURNS SETOF table1
  LANGUAGE plpgsql AS
$func$
BEGIN
   RETURN QUERY EXECUTE
   (
   SELECT string_agg(format('SELECT * FROM %I', tbl), ' UNION ALL ')
   FROM   (SELECT tbl FROM tablenames ORDER BY id) sub
   );
END
$func$;

Gọi:

SELECT * FROM f_multi_select();

Giả sử rằng tất cả các bảng chia sẻ cùng một loại hàng - vì vậy chúng ta có thể chọn bất kỳ hàng nào để xác định kiểu trả về của hàm.

Tôi đã đưa vào một truy vấn con với ORDER BY - trong trường hợp thứ tự của các bảng có ý nghĩa.

Có liên quan:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. vấn đề khi chạy liquibase với maven và postgres-db

  2. Làm cách nào để lọc mảng json trên mỗi hàng được trả về?

  3. Django Postgres ArrayField tổng hợp và lọc

  4. PostgreSQL xóa tất cả nội dung

  5. Làm cách nào để lưu trữ giờ mở cửa của một cửa hàng trong cơ sở dữ liệu SQL?