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

Làm thế nào để tăng nặng số nguyên trong postgresql?

Biểu thức select array_agg(4) trả về tập hợp các hàng (thực sự là tập hợp các hàng có 1 hàng). Do đó, truy vấn

select *
from b
where b.id = any (select array_agg(4))  -- ERROR

cố gắng so sánh một số nguyên (b.id) với một giá trị của một hàng (có 1 cột kiểu số nguyên []). Nó gây ra lỗi.

Để khắc phục, bạn nên sử dụng truy vấn con trả về số nguyên (không phải mảng số nguyên):

select *
from b
where b.id = any (select unnest(array_agg(4)))

Ngoài ra, bạn có thể đặt tên cột của kết quả là select array_agg(4) làm đối số của any , ví dụ:

select *
from b
cross join (select array_agg(4)) agg(arr)
where b.id = any (arr)

hoặc

with agg as (
    select array_agg(4) as arr)
select *
    from b
    cross join agg
    where b.id = any (arr)

Chính thức hơn, hai truy vấn đầu tiên sử dụng ANY có dạng:

Toán tử biểu thức
expression operator ANY (subquery)

và hai cái còn lại sử dụng

Toán tử biểu thức
expression operator ANY (array expression)

giống như nó được mô tả trong tài liệu: 9.22.4. ANY / MỘT SỐ 9.23.3. BẤT KỲ / MỘT SỐ (mảng) .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khối mã ẩn danh PL / pgSQL

  2. mô-đun đa xử lý và các kết nối psycopg2 riêng biệt

  3. Không thể kết nối với Postgresql trên cổng 5432

  4. Quản lý tính khả dụng cao trong PostgreSQL - Phần II:Trình quản lý nhân bản

  5. Số thuộc tính 10 vượt quá số cột 0