ANY 和 ALL 这俩 SQL 里的谓词,真的是在子查询里蛮常见的,尤其做条件判断的时候好用。any(有时候写作 some)是“只要有一个满足就行”,而 all 则是“必须全都满足才行”。听起来像小学生数学题?但实际用起来还挺精妙的。

比如你查一堆订单金额大于某用户所有订单金额,那就用 ALL。换成 ANY 呢,就是大于这个用户任意一个订单的金额。SELECT 语句一加,就能玩出不少组合技。

而且它俩的搭配技巧也挺灵活的,有时候还能用 minmax 来等价替代。像 t = ANY(subquery) 其实就跟 t IN (subquery) 差不多,只不过用法更灵活。要想彻底搞懂,推荐你多看看一些实战例子。

我顺手翻了几个资源,还蛮值得一看的:

如果你正好在写 SQL,碰上需要做“是否大于某几个值”这种判断,不妨试试 ANYALL。逻辑清晰、语法也简单,响应也快。尤其在优化子查询那块儿,真能省不少事。