• SQL查询时踩得一些坑


    1.左右连接:

    left join:LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。

    inner join: 内连接是最常见的一种连接,只连接匹配的行.

    right join:RIGHT JOIN返回右表的全部行和左表满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。

    这边查询的时候,有的时候总是会将内连接,和左连接搞混,得到的结果不是需要的.

    2.查询数据库中某类数据出现多少次:

    查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
    CREATE TABLE `salaries` (
    `emp_no` int(11) NOT NULL,
    `salary` int(11) NOT NULL,
    `from_date` date NOT NULL,
    `to_date` date NOT NULL,
    PRIMARY KEY (`emp_no`,`from_date`));

    查询上面的结果需要注意使用group by  以及  having的使用

    group by:聚合函数,这里面可以将emp_no一致的归为一组

    having:HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。

    HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。

    select emp_no ,count(emp_no ) t from salaries group by emp_no having t>15 

    3.当group by order by 同时使用时候

    1)GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。

    2)order by 的列,必须是出现在group by 子句里的列 

    4.DISTINCT 

    统计出不重复的条数

    select count(distinct(需要统计不重复的字段)) from 表

    5.sql 查询的时候判断某个字段为奇数偶数

    查询条件中判断n的类型
    n%2==0 ----偶数
    n%2==1 ----奇数

    6.sql查询平均值

    select  avg(value) from table where 条件1='值1' and 条件2 ='值2'
    group by 字段名  
  • 相关阅读:
    Gvim快捷键学习
    一步一步学习Vim 全图解释
    经典vim插件功能说明、安装方法和使用方法介绍
    中国数学数字图书馆
    RQNOJ第一题---PID1 / 明明的随机数
    gdb常用命令
    linux c下mysql编程样例
    linux c编程 -- 线程互斥
    linux c多线程编程范例
    数据结构 -- 可重用模块的接口设计模板
  • 原文地址:https://www.cnblogs.com/shenyanrushang/p/10852492.html
Copyright © 2020-2023  润新知