PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kueri PostgreSQL dengan 'APAPUN' tidak berfungsi

Anda ingin menggunakan ALL , bukan ANY . Dari manual yang bagus:

9.21.3. APAPUN/BEBERAPA (array)

expression operator ANY (array expression)

[...] Ekspresi sebelah kiri dievaluasi dan dibandingkan dengan setiap elemen larik menggunakan operator yang diberikan , yang harus menghasilkan hasil Boolean. Hasil dari ANY adalah "benar" jika diperoleh hasil yang benar.

Jadi jika kita mengatakan ini:

1 != any(array[1,2])

maka kita akan mendapatkan true karena (1 != 1) or (1 != 2) adalah benar. ANY pada dasarnya adalah OR operator. Misalnya:

=> select id from (values (1),(2),(3)) as t(id) where id != any(array[1,2]);
 id 
----
  1
  2
  3
(3 rows)

Jika kita melihat ALL , kita melihat:

9.21.4. SEMUA (larik)

expression operator ALL (array expression)

[...] Ekspresi sebelah kiri dievaluasi dan dibandingkan dengan setiap elemen larik menggunakan operator yang diberikan , yang harus menghasilkan hasil Boolean. Hasil dari ALL adalah "benar" jika semua perbandingan menghasilkan benar...

jadi jika kita mengatakan ini:

1 != all(array[1,2])

maka kita akan mendapatkan false karena (1 != 1) and (1 != 2) salah dan kita melihat bahwa ALL pada dasarnya adalah AND operator. Misalnya:

=> select id from (values (1),(2),(3)) as t(id) where id != all(array[1,2]);
 id 
----
  3
(1 row)

Jika Anda ingin mengecualikan semua nilai dalam array, gunakan ALL :

select "Ticket_id"
from "Tickets"
where "Status" = 1
  and "Ticket_id" != all(array[1,2,3])
limit 6


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:Bagaimana cara mengubah string json menjadi teks?

  2. Pilih baris pertama di setiap grup GROUP BY?

  3. Menyebarkan Django ke Heroku (Kesalahan Psycopg2)

  4. Cara Membuat Tampilan di PostgreSQL

  5. Penyeimbangan Beban PostgreSQL Menggunakan HAProxy &Keepalive