最近一直在练习MYSQL的多表查询,基本上每个查询语句我都会写至少两次:一次join连接,一次子查询。来对比一下MYSQL在不同的查询方式下的工作方式和效率。在子查询有any、all、some这些关键词。
any、all关键字必须与一个比较操作符一起使用。any关键词可以理解为“对于子查询返回的列中的任一数值,如果比较结果为true,则返回true”。all的意思是“对于子查询返回的列中的所有值,如果比较结果为true,则返回true”
any 可以与=、>、>=、<、<=、<>结合起来使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的任何一个数据。
all可以与=、>、>=、<、<=、<>结合是来使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的其中的所有数据。
举个例子
select s1 from t1 where s1 > any (select s1 from t2);
假设any后面的s1返回了三个值,那其实就等价于
select s1 from t1 where s1 > result1 or s1 > result2 or s2 > result3
而all的用法相当于把上述语句的‘or’缓冲‘and’
说道这你可能已经知道了any和or常用于两表的对比,当你不知道where后面具体值是可以用any,all帮你判定。