只有子查询返回的结果列包含一个值时,比较运算符才适用。假如一个子查询返回的结果集是值的列表,这时比较运算符就必须用IN运算符代替。
IN运算符能够检测结果集中是否存在某个特定的值,若是检测成功就执行外部的查询。ide
查看在infos表中score字段内容符合条件对应的info表信息
SELECT * from info where score in (SELECT score FROM infos );3d
查询结果:
blog
查看在infos表和info表同名人信息
SELECT * from info where name in (SELECT name FROM infos );it
查询结果:
class
子查询能够使用比较运算符。这些比较运算符包括=、!=、>、>=、<、<=等。比较运算符在子查询时使用的很是普遍。im
SELECT * from info where age >= (SELECT age FROM infos where id =4);d3
查询结果:
查询
使用EXISTS关键字时,内层查询语句不返回查询的记录。而是返回一个真假值。若是内层查询语句查询到知足条件的记录,就返回一个真值(true),不然,将返回一个假值(false)。当返回的值为true时,外层查询语句将进行查询;当返回的为false时,外层查询语句不进行查询或者查询不出任何记录。db
SELECT * from info where exists (SELECT * from infos where id =2);img
查询结果:
SELECT * from info where exists (SELECT * from infos where id =27);
查询结果:
ANY关键字表示知足其中任意一个条件。使用ANY关键字时,只要知足内层查询语句返回的结果中的任意一个,就能够经过该条件来执行外层查询语句。
SELECT * from info where age > ANY(SELECT age from infos);
查询结果:
ALL关键字表示知足全部条件。使用ALL关键字时,只有知足内层查询语句返回的全部结果,才能够执行外层查询语句。
SELECT * from info where age < all(SELECT age from infos);
查询结果:
合并查询结果是将多个SELECT语句的查询结果合并到一块儿。合并查询结果使用UNION和UNION ALL关键字。
SELECT score from info UNION SELECT score from infos;
查询结果:
SELECT score from info UNION SELECT name from infos;
查询结果: