MySQL的联合查询和子查询

来源:互联网 发布:西安天睿软件 编辑:程序博客网 时间:2024/04/29 18:27

MySQL的联合查询和子查询

  • @ sunRainAmazing

联合查询

 联合查询        将多次查询(多条select语句),在记录上进行拼接(字段不会增加)    基本语法        多条select语句构成,         每一条select语句获取的字段必须严格一致(与字段类型无关)        select 语句1        union  [union 选项]        select 语句2......    union选项:与select选项一样有两个         all: 保留所有不管重复        district:去重(整个重复)---默认的    联合查询的意义?    1、查询同一张表,需求不同        如查询学生信息,男生年龄升序desc,女生年龄降序asc2、多表查询:多表的结构是完全一样的,保存的数据(结构)也是一样的    注意事项        1.在联合查询中 order by  不能单独使用,            需要对查询语句使用括号才行        2.若想器生效 必须结合limit 关键字才可以  采用最大数 999999(select * from stu where sex='男' order by age desc limit 999999)union(select * from stu where sex='女' order by age asc limit 999999);

子查询

子查询    含义:        sub query从其他查出来的结果之上获取        一条select语句内部包含另外的select语句    分类:     按位置分类:子查询(select) 在外部查询(select语句)中出现的位置            ① from子查询:出现在from之后            ② where子查询:出现在where条件            ③ exists子查询:出现在exists里面    按结果分类:根据子查询得到的数据进行分类            (理论上任何一个查询得到的结果都可以理解为二维表)            ① 标量子查询:子查询得到的结果是一行一列            ② 列子查询:子查询得到的结果是一列多行            ③ 行子查询:结果是多列一行(多列多行)            ---都是在where之后            表子查询:结果是多行多列,出现的位置是在from之后    1.确定数据源  查找查询条件     -- 查询班级名为 Java01 的学生的信息        select * from stu where cid =             (select id from cla where name='Java01');    -- 查询所有班级的学生信息(有的学生还没有正式进班)        select * from stu where cid in             (select id from cla);    -- 查询是否存在 年龄最大 且身高最高的学生的信息        select * from stu where        age = (select max(age) from stu)        and        height = (select max(height) from stu);        ---还可以利用行元素进行 查询 (age,height) 称之为行元素        select * from stu where        (age,height)=        (select max(age),max(height) from stu);
0 0
原创粉丝点击