DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) row-subqueries

Info Catalog (mysql.info) all-subqueries (mysql.info) subqueries (mysql.info) exists-and-not-exists-subqueries
 
 13.2.8.5 Row Subqueries
 .......................
 
 The discussion to this point has been of scalar or column subqueries;
 that is, subqueries that return a single value or a column of values. A
 _row subquery_ is a subquery variant that returns a single row and can
 thus return more than one column value. Here are two examples:
 
      SELECT * FROM t1 WHERE (1,2) = (SELECT column1, column2 FROM t2);
      SELECT * FROM t1 WHERE ROW(1,2) = (SELECT column1, column2 FROM t2);
 
 The queries here are both `TRUE' if table `t2' has a row where `column1
 = 1' and `column2 = 2'.
 
 The expressions `(1,2)' and `ROW(1,2)' are sometimes called row
 constructors. The two are equivalent. They are legal in other contexts
 as well. For example, the following two statements are semantically
 equivalent (although currently only the second one can be optimized):
 
        SELECT * FROM t1 WHERE (column1,column2) = (1,1);
        SELECT * FROM t1 WHERE column1 = 1 AND column2 = 1;
 
 The normal use of row constructors is for comparisons with subqueries
 that return two or more columns. For example, the following query
 answers the request, `find all rows in table `t1' that also exist in
 table `t2'':
 
      SELECT column1,column2,column3
      FROM t1
      WHERE (column1,column2,column3) IN
      (SELECT column1,column2,column3 FROM t2);
 
Info Catalog (mysql.info) all-subqueries (mysql.info) subqueries (mysql.info) exists-and-not-exists-subqueries
automatically generated byinfo2html