zoukankan      html  css  js  c++  java
  • mysql(四)

    联合

    一般用于将多张结构相同或相似的表进行联合查询。

    select field1,field2 from table_name1 union [all|distinct] select field1,field2 from table_name2;
    • 前后两张表要查询的字段数应该一致,对应字段的数据类型不要求一致
    • 可以在union后加关键字判断是否去除重复记录,all表示不去重,distinct表示去重。默认的是不去重
    • 判断重复仅仅是判断字面量是否一致,而不关心数据类型,比如int类型的123和字符类型的123重复

    排序

    select * from table_name order by field1 asc,field2 desc;
    • 排序用关键字order by,其后跟排序依赖的字段,可以有多个
    • 默认的是升序排列,但可以在每个字段后加关键字 asc或者desc分别声明升序或降序排列
    • gbk编码的字符直接就是拼音排序,而如果是utf8编码字符默认是按unicode排序,如果也要进行拼音排序需要借助函数转码
    order by convert(name using gbk);

    分组

    select count(*) as 个数 group by age having count(*)>10;

    1、聚合函数

    • count(*):用于统计分组内的个数,其括号内可以是*,也可以是某个字段
    • sum(字段):用于统计分组内某字段的累加值
    • avg(字段):用于统计分组内某字段的平均值
    • max(字段):用于统计分组内某字段的最大值
    • min(字段):用于统计分组内某字段的最小值

    聚合函数一般与分组搭配使用,但是其也可以单独使用,表示将整个查询结果看作一个分组。

    2、分组

    • 分组的意思是按照分组字段,表中各个行拥有相同的分组字段值的分为一组
    • 分组字段可以是多个

    3、分组筛选

    • having用于对分组后的聚合函数条件匹配

    连接

    • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
    • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
    • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
    select a.name,b.address from tb_user a inner join tb_info b on a.id=b.user_id;

    子查询

    select * from tb_user where id in (select id from tb_info where age>18);
    • 子查询会得到一个集合,如果匹配字段存在某个值在该集合中则会筛选出来

    case when

    参考

    (1)简单case函数:比如0和1对男和女的结果转换

    (2)case搜索函数:将符合case条件的转为某个数值便于统计

  • 相关阅读:
    C#动态生成Word文档并填充数据
    解析C#中is和as操作符的用法
    转载opencv2.4.0在Vs10下的配置
    XNA之RPG游戏开发教程之一
    XNA之RPG游戏开发教程之四
    XNA之RPG游戏开发教程之二
    有关BackgroundWork类的使用
    XNA之RPG游戏开发教程之六
    XNA之RPG游戏开发教程之八
    XNA之RGP游戏开发教程之七
  • 原文地址:https://www.cnblogs.com/heibaimao123/p/13789879.html
Copyright © 2011-2022 走看看