zoukankan      html  css  js  c++  java
  • 《Mysql

    1:DISTINCT 用于去重,但是需要注意的是,它是用于所有列的,也就是说,除非指定的列全部相同,否则所有的行都会被检索出来。


    2:ORDER BY 用于排序,但是应该注意的是,它因该是 SELECT 语句中出现的最后一条字句,如果不是,则报错。

    3:在 WHERE 字句中出现多个 AND 和 OR 时候应该特别注意,因为和大多数语言一样,因为优先级不同(AND更大),所以在使用中 应该使用 ()来包住你需要的筛选条件。

    4:IN 可以使用 WHERE / OR 实现,但是最大的不同是,IN 中可以包含 WHERE 字句

    5:当使用 AS 重新命名之后,必须使用命名之后的名称。

    SELECT `user.name` FROM `name` AS n;  // 报错,没有此字段
    SELECT `n.name` FROM `name` AS n; // 正常,包括 WHERE 字句中也是如此 

    6:WHERE 和 HAVING 的区别

      - HAVING 的删选条件只能是之前已经筛选出来的字段

      - WHERE  的使用是表中具体存在的字段

        - 例如

        1:having 和 where 都可以使用
        select
    id,name form user where id = 1; // 正常
        select id,name form user having id = 1; // 正常,因为having的字段是之前已经 select 的字段
      
        2:只有where可以使用
        select name form user having id = 1; // 报错,因为having的字段并没有select出来

        3:只有having可以使用
        group by 字句后面
        聚合函数只有having能用

        select count(*) as count from users where count > 0 group by id; // 错误,count并不是表字段,而是算出来的值,where不认识
        select count(*) as count from users group by id where count > 0 ; // 正确

      - 总结来说

        where 可以使用的,是表里的具体字段,而聚合函数count(`field`)/avg(`field`)等等,它们算出来的都不是表里的字段,当然不能使用。

        而 having 的过滤条件是之前已经检索出来的数据。

  • 相关阅读:
    Docker实战第一天(Docker虚拟化安装)
    Linux下远程桌面连接windows
    运维自动化工具ansible(模块使用)
    运维自动化工具ansible(安装)
    MongoDB学习(二)mongoDB常用命令
    MongoDB学习(一)Centos6.5下安装mongoDB
    AWK用法详解(转载)
    sed用法详解(转载)
    centos6.5部署subversion(svn)
    mysqlAB复制(自动同步)
  • 原文地址:https://www.cnblogs.com/25-lH/p/9372733.html
Copyright © 2011-2022 走看看