MySQL的SQL語句 - 數據操做語句(13)- 子查詢(3)

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

相關文章
相關標籤/搜索