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

  • 相关阅读:
    如何让自己的app尽量不被系统杀死
    linux常用命令-权限管理命令
    linux常用命令-用户管理命令
    linux常用命令-文件处理命令
    npm命令
    新技术新框架新工具选型原则
    tomcat启动命令行中文乱码
    docker命令
    tinkpad e450c 进入 BIOS
    基于Java服务的前后端分离解决跨域问题
  • 原文地址:https://www.cnblogs.com/25-lH/p/9372733.html
Copyright © 2011-2022 走看看