exists
exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录;反之,如果exists里的条件语句不能返回记录行,则当前loop到的这条记录被丢弃,exists的条件就像一个bool条件,当能返回结果集则为true,不能返回结果集则为false
如下:
代码语言:javascript 复制select * from user where exists (select 1);
对user表的记录逐条取出,由于子条件中的select 1
永远能返回记录行,那么user表的所有记录都将被加入结果集,所以与select * from user;
是一样的。
又如下:
代码语言:javascript 复制select * from user where exists (select * from user where user_id = 0);
可以知道对user表进行loop时,检查条件语句(select * from user where user_id = 0)
,由于user_id永远不为0,所以条件语句永远返回空集,条件永远为false,那么user表的所有记录都将被丢弃。
总结:如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件。
标签:返回,Exists,exists,记录,条件,user,Mysql,select From: https://www.cnblogs.com/cytc/p/18359429