top
Loading...
13.2.8.5.行子查詢
13.2.8.5. 行子查詢
對于本點的討論屬于標量或列子查詢,即返回一個單一值或一列值的子查詢。行子查詢是一個能返回一個單一行的子查詢變量,因此可以返回一個以上的列值。以下是兩個例子:
SELECT * FROM t1 WHERE (1,2) = (SELECT column1, column2 FROM t2);
SELECT * FROM t1 WHERE ROW(1,2) = (SELECT column1, column2 FROM t2);

如果在表t2的一個行中,column1=1并且column2=2,則查詢結果均為TRUE

表達式(12)和ROW12)有時被稱為行構造符。兩者是等同的,在其它的語境中,也是合法的。例如,以下兩個語句在語義上是等同的(但是目前只有第二個語句可以被優化):

  SELECT * FROM t1 WHERE (column1,column2) = (1,1);
  SELECT * FROM t1 WHERE column1 = 1 AND column2 = 1;

行構造符通常用于與對能返回兩個或兩個以上列的子查詢進行比較。例如,以下查詢可以答復請求,“在表t1中查找同時也存在于表t2中的所有的行”:

SELECT column1,column2,column3
FROM t1
WHERE (column1,column2,column3) IN
(SELECT column1,column2,column3 FROM t2);
作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html
北斗有巢氏 有巢氏北斗