使用子查询进行比较html
子查询最经常使用的形式是:mysql
1. non_subquery_operand comparison_operator (subquery)
其中 comparison_operator 是如下运算符之一:sql
1. = > < >= <= <> != <=>
例如:ide
1. ... WHERE 'a' = (SELECT column1 FROM t1)
MySQL 也容许这种结构:函数
1. non_subquery_operand LIKE (subquery)
曾经子查询的惟一合法位置是在比较符的右侧,可能有一些老的 DBMS 仍然在坚持这一点。code
下面是一个子查询比较的常见形式,使用联接没法作到这一点。它查找表 t1 中 column1 值等于表 t2 中最大值的全部行:htm
1. SELECT * FROM t1 2. WHERE column1 = (SELECT MAX(column2) FROM t2);
这是另外一个例子,对于使用联接来讲这又是不可能的,由于它涉及到对其中一个表的聚合。它查找表 t1 中包含在给定列中出现两次的值的全部行:get
1. SELECT * FROM t1 AS t 2. WHERE 2 = (SELECT COUNT(*) FROM t1 WHERE t1.id = t.id);
要将子查询与标量进行比较,子查询必须返回标量。要将子查询与行构造函数进行比较,子查询必须是返回值数量与行构造函数相同的行子查询。it
官方网址:
https://dev.mysql.com/doc/refman/8.0/en/comparisons-using-subqueries.htmlclass