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

Postgres ĐỂ LOOP

Thủ tục các phần tử như vòng lặp không phải là một phần của ngôn ngữ SQL và chỉ có thể được sử dụng bên trong phần thân của một hàm, thủ tục ngôn ngữ thủ tục (Postgres 11 trở lên) hoặc một DO tuyên bố, trong đó các phần tử bổ sung như vậy được xác định bằng ngôn ngữ thủ tục tương ứng. Mặc định là PL / pgSQL, nhưng có những cái khác.

Ví dụ với plpgsql:

DO
$do$
BEGIN 
   FOR i IN 1..25 LOOP
      INSERT INTO playtime.meta_random_sample
         (col_i, col_id)                       -- declare target columns!
      SELECT  i,     id
      FROM   tbl
      ORDER  BY random()
      LIMIT  15000;
   END LOOP;
END
$do$;

Đối với nhiều tác vụ có thể được giải quyết bằng vòng lặp, có một dựa trên bộ ngắn hơn và nhanh hơn giải pháp xung quanh góc. Tương đương SQL thuần túy cho ví dụ của bạn:

INSERT INTO playtime.meta_random_sample (col_i, col_id)
SELECT t.*
FROM   generate_series(1,25) i
CROSS  JOIN LATERAL (
   SELECT i, id
   FROM   tbl
   ORDER  BY random()
   LIMIT  15000
   ) t;

Giới thiệu về generate_series() :

  • Hành vi mong đợi cho nhiều hàm trả về trong mệnh đề SELECT là gì?

Giới thiệu về tối ưu hóa hiệu suất của các lựa chọn ngẫu nhiên:

  • Cách tốt nhất để chọn các hàng ngẫu nhiên PostgreSQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dấu hai chấm (::) ký hiệu trong SQL

  2. Tạo cơ sở dữ liệu PostgreSQL

  3. Heroku Rails 4 không thể kết nối với máy chủ:kết nối bị từ chối

  4. Tổng quan về Lập trình phía máy chủ trong PostgreSQL

  5. Tổng hợp kết nối PostgreSQL:Phần 2 - PgBouncer