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

  • 相关阅读:
    yii2 批量插入
    yii2 ArrayHelper的19个函数+使用实例+功能详解
    thinkphp phpexcel
    yii2 ActiveForm beforeSubmit用法
    YII2项目常用技能知识总结
    Redis 的 fields 遇到的问题
    spring boot +mybatis+druid 多数据源配置
    简单使用shell 自动打包,发布项目 脚本
    cmpp 短信平台
    mysql workbench 导出表结构
  • 原文地址:https://www.cnblogs.com/25-lH/p/9372733.html
Copyright © 2020-2023  润新知