使用子查詢進行比較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