mysql严格模式,怎么用呢?

yi0zb3m4  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(229)

我开始知道这个严格的模式,而在我的课程,我被建议关闭它,我现在做了。但如果严格模式存在的话,肯定是有原因的。首先让我展示一下出错的代码

SELECT `first_name`,
       `last_name`, 
       `order_date`, 
       `amount` 
 FROM `customers`
    JOIN `orders`
        ON `customers`.`id` = `orders`.`customer_id`
GROUP BY `orders`.`customer_id`;

我得到了错误代码1055错误图像
据我所知,我必须使用组中的所有字段。
所以应该是这样。

SELECT `first_name`,
       `last_name`, 
       `order_date`, 
       `amount` 
 FROM `customers`
    JOIN `orders`
        ON `customers`.`id` = `orders`.`customer_id`
GROUP BY `orders`.`customer_id`,`order_date`, 'amount';

代码会“工作”,但它会分组 order_date 还有“数量”,我不想发生。
对于 amount 我必须使用sum(),所以我不必再在groupby上使用它,但是 order_date 仍然存在。
amount is still here 它会显示所有的日期选项,我知道每个id=id可能只有一个日期
作为将来的参考,我应该如何很好地使用strict模式,还是应该关闭它?

bmp9r5qi

bmp9r5qi1#

一般来说,严格模式在mysql中是首选的,因为它可以帮助您避免一些常见的错误,比如这个错误。
选择未包含在 GROUP BY 没有任何聚合的子句,没有严格模式的mysql可能会返回任何随机行,并且您不能对将返回哪一行做出任何假设。严格模式下的mysql和其他许多rdbms一样,会引发一个错误,因此您必须修复查询。
要正确编写查询,首先需要弄清楚要获取哪些数据 order_date 以及 amount --例如,应该是客户的最新订单还是其他订单。

相关问题