Menambah ALL/ANYJawaban
Saya lebih suka semua solusi yang menggunakan allatau anyuntuk mencapai hasil, menghargai catatan tambahan (misalnya tentang NULL s). Sebagai tambahan lainnya, berikut adalah cara untuk memikirkan operator tersebut.
Anda dapat menganggapnya sebagai operator hubung singkat :
all(array)menelusuri semua nilai dalam larik, membandingkan masing-masing dengan nilai referensi menggunakan operator yang disediakan. Begitu perbandingan menghasilkan false, proses berakhir dengan salah, jika tidak benar. (Sebanding dengan logika hubung singkat and.)
any(array)menelusuri semua nilai dalam larik, membandingkan masing-masing dengan nilai referensi menggunakan operator yang disediakan. Segera setelah hasil perbandingan true, proses berakhir dengan benar, sebaliknya salah. (Sebanding dengan logika hubung singkat or.)
Inilah sebabnya mengapa 3 <> any('{1,2,3}')tidak menghasilkan hasil yang diinginkan: Proses membandingkan 3 dengan 1 untuk ketidaksetaraan, yang benar, dan segera mengembalikan benar. Nilai tunggal dalam larik yang berbeda dari 3 sudah cukup untuk membuat seluruh ketentuan menjadi benar. Angka 3 pada posisi larik terakhir adalah prob. tidak pernah dipakai.
3 <> all('{1,2,3}')di sisi lain memastikan semua nilai tidak sama 3. Ini akan berjalan melalui semua perbandingan yang menghasilkan true hingga elemen yang menghasilkan false (yang terakhir dalam kasus ini), untuk mengembalikan false sebagai hasil keseluruhan. Inilah yang diinginkan OP.
WHERE 3 NOT IN recipient_idsbekerja?