Mysql 子查询

104 阅读2分钟

学习的文章地址

Mysql 学习记录子查询重点记录

from 语句是足行允许,一行运行了之后在查询第二行。where 后面的参数是前面的from语句查询出来的,所以这一段都算是一个字查询:(select id,name from tableName) as 别名必须要些 where id=3 and name =4;

select col from (select id,name from tableName) as 表的别名必须要 where id=3 and name =4;

例子: select PLAYERNO from (select PLAYERNO,SEX from PLAYERS) as PLAYERNOname where SEX='M' and PLAYERNO < 10;

where 语句也是足行查询

SELECT playerno from PLAYERS WHERE (sex,town) = (SELECT sex, town from PLAYERS WHERE playerno = 100);
分析:
WHERE (sex,town) 足行查询的条件
子查询:注意子查询返回值最好是一行。如果多行的话就会报错。(只是判断有还是没有的话可以用exists,或者not exists)
(SELECT sex, town from PLAYERS WHERE playerno = 100);

in: 与查询条件做对比如果为true则返回列;

自己总结的经验

SELECT name 
from PLAYERS as table2 
WHERE birth_date <= all
(SELECT birth_date from PLAYERS as table1);
父查询语句:SELECT name from PLAYERS as table2 WHERE birth_date;父查询每次只执行一行,而子查询每次都会吧怎张表循环玩,每循环一行就会吧值返回来与之对比。
子查询按对返回结果集的调用方法,可分为where型子查询,from型子查询及exists型子查询。
where型子查询:(把内层查询结果当作外层查询的比较条件)
定义:where型的子查询就是把内层查询的结果当作外层查询的条件。
    from型子查询:(把内层的查询结果供外层再次查询)
定义:from子查询就是把子查询的结果(内存里的一张表)当作一张临时表,然后再对它进行处理。
    exists型子查询:(把外层查询结果拿到内层,看内层的查询是否成立)
定义:exists子查询就是对外层表进行循环,再对内表进行内层查询。和in ()差不多,但是它们还是有区别的。主要是看两个张表大小差的程度。若子查询表大则用exists(内层索引),子查询表小则用in(外层索引);、