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 的过滤条件是之前已经检索出来的数据。

  • 相关阅读:
    微信 JS SDK 的 chooseImage 接口在部分安卓机上容易造成页面刷新
    规约模式Specification Pattern
    ASP.NET Core 1.0基础之日志
    C# 7 新特性-2
    C# 7 新特性-1
    ASP.NET Core 1.0基础之诊断
    ASP.NET Core 1.0基础之依赖注入
    ASP.NET Core 1.0 基础之配置
    ASP.NET Core 1.0基础之静态文件处理
    FreeSql生产环境自动升级数据库解决方案
  • 原文地址:https://www.cnblogs.com/25-lH/p/9372733.html
Copyright © 2011-2022 走看看