MySQL 9.0 发行说明
子查询最常见的用法是
non_subquery_operand comparison_operator (subquery)其中 comparison_operator 是以下运算符之一
= > < >= <= <> != <=>例如
... WHERE 'a' = (SELECT column1 FROM t1)MySQL 也允许这种结构
non_subquery_operand LIKE (subquery)曾经,子查询只能出现在比较的右侧,你可能还会在一些旧的 DBMS 中看到这种限制。
以下是一个常见的子查询比较示例,它无法用连接实现。它查找表 t1 中所有 column1 值等于表 t2 中最大值的行的行。
SELECT * FROM t1
WHERE column1 = (SELECT MAX(column2) FROM t2);以下是一个另一个示例,它也无法用连接实现,因为它涉及对其中一个表的聚合。它查找表 t1 中包含在给定列中出现两次的值的所有行的行。
SELECT * FROM t1 AS t
WHERE 2 = (SELECT COUNT(*) FROM t1 WHERE t1.id = t.id);对于将子查询与标量进行比较,子查询必须返回一个标量。对于将子查询与行构造函数进行比较,子查询必须是返回与行构造函数相同数量的值的行行的行子查询。请参见 第 15.2.15.5 节,“行子查询”。