MySQL 笔记 (9) 子查询

子查询需用括号包裹。

from型

from后要求是一个表,必须给子查询结果取个别名。

  • 简化每个查询内的条件。
  • from型需将结果生成一个临时表格,可用以原表的锁定的释放。
  • 子查询返回一个表,表型子查询。
1
select * from (select * from tb where id>0) as subfrom where id>1;

where型

  • 子查询返回一个值,标量子查询。
  • 不需要给子查询取别名。
  • where子查询内的表,不能直接用以更新。
1
select * from tb where money = (select max(money) from tb);
  • 列子查询

如果子查询结果返回的是一列。
使用 in 或 not in 完成查询
exists 和 not exists 条件
如果子查询返回数据,则返回1或0。常用于判断条件。

1
select column1 from t1 where exists (select * from t2);
  • 行子查询

查询条件是一个行。

1
select * from t1 where (id, gender) in (select id, gender from t2);

行构造符:(col1, col2, …) 或 ROW(col1, col2, …)

行构造符通常用于与对能返回两个或两个以上列的子查询进行比较。

特殊运算符:

!= all() 相当于 not in
= some() 相当于 in。any 是 some 的别名
!= some() 不等同于 not in,不等于其中某一个。
all, some 可以配合其他运算符一起使用。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2021 朝着牛逼的道路一路狂奔 All Rights Reserved.

访客数 : | 访问量 :