zoukankan      html  css  js  c++  java
  • order by 分组报错 shop 有三个字段 根据author 选出最大的price

    要求:必须查询所有字段

    select author,artical,max(price)
    FROM shop
    GROUP BY author

     执行成功了。

    但是

    有些可能会失败。

    解决

    1 第一步

    先执行

    select @@global.sql_mode

    如果展示,

     则是关闭了MySql依赖检测功能,如果版本低于5.8 则会默认这个

    如果展示

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

    则是没有关闭 MysqL5.8版本及以上默认开启的。=这种情况下。order by 有所规定。
    2 第二步
    判断问题之后,就是解决问题了。
    一般 order by 出问题 ,应该开启检测功能。
    2.1 关闭
    select @@global.sql_mode;
    set @@sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
    set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

    在执行

    select author,artical,max(price)
    FROM shop
    GROUP BY author,artical,price

    2.2 不想关闭

    只能更改sql 语句

    (1)更改一 子查询

    SELECT
        *
    FROM
        shop s1 where 
    price = (select max(s2.price)
    FROM
        shop s2
    WHERE
        s1.author = s2.author
    );

    (2)左连接

    
    
    SELECT  s1.author,s1.artical,s1.price
    FROM shop s1
    LEFT JOIN shop s2
    on s1.author=s2.author and s1.price < s2.price
    WHERE s2.price is null 
    
    
    
     
  • 相关阅读:
    实验五
    实验四
    实验三
    实验二
    寄存器(内存访问)
    实验一
    寄存器
    Mermaid 绘图总结
    电脑查看系统版本
    _ZNote_Chrom_插件_Chrom运行Android软件_APK
  • 原文地址:https://www.cnblogs.com/zq1003/p/14145690.html
Copyright © 2011-2022 走看看