logoalt Hacker News

frollogaston05/04/20253 repliesview on HN

Yes, according to the manual, IN is equivalent to = ANY() https://www.postgresql.org/docs/current/functions-subquery.h...

I had to check because for some reason, I always thought =ANY was somehow better than IN.


Replies

Sesse__05/04/2025

IN is fine. The biggest problem comes with NOT IN, which has NULL semantics that makes life difficult for the planner. It is consistent but rarely what the user wants. NOT EXISTS is typically better there.

tczMUFlmoNk05/04/2025

ANY can be used with arrays, particularly query parameters: `id = ANY($1::int[])`, but not `id IN $1::int[]`.

show 1 reply
masklinn05/04/2025

It is, but in a pretty minor way: any can be used with no items, IN can not and will error.