Berdasarkan bagian pesan kesalahan operator does not exist: integer = integer[]
, tampaknya bs
kolom harus unnest
ed, untuk mengembalikan sisi kanan ke integer
sehingga operator perbandingan dapat ditemukan:
WITH bar AS (
SELECT array_agg(b) AS bs
FROM foo
WHERE c < 3
)
SELECT a
FROM foo
WHERE b = ANY ( SELECT unnest(bs) FROM bar);
Ini menghasilkan output:
A
2
3
Diberikan dokumen untuk FUNGSI APA PUN :
... kesalahannya masuk akal, karena ekspresi sebelah kiri adalah integer
-- kolom b
-- sedangkan ekspresi tangan kanan adalah larik integer
s, atau integer[]
, dan perbandingannya berakhir dalam bentuk integer
=integer[]
, yang tidak memiliki operator, dan karena itu menghasilkan kesalahan.
unnest
dengan integer[]
value membuat ekspresi kiri dan kanan integer
s, sehingga perbandingan dapat dilanjutkan.
Modifikasi SQL Fiddle .
Catatan: bahwa perilaku yang sama terlihat saat menggunakan IN
bukannya = ANY
.