gpt4 book ai didi

MYSQL严格模式,如何使用?

转载 作者:行者123 更新时间:2023-11-29 10:05:13 26 4
gpt4 key购买 nike

我在类(class)中了解到了这种严格模式,有人建议我将其关闭,目前我确实这么做了。但如果严格模式存在,那肯定是有原因的。首先让我展示出现错误的代码

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

我收到错误代码 1055

error image

据我所知,除非聚合,否则我必须使用 GROUP BY 中的所有字段。

所以应该是这样的。

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 和“金额”分组,但我不希望发生这种情况。

对于金额,我必须使用SUM(),因此我不必再在GROUP BY上使用它,但order_date仍然存在。

由于金额仍然在这里,它会显示所有日期选项,我确实知道每个 id=id 可能只有一个日期

为了将来的引用,我应该如何良好地使用严格模式,或者我应该将其关闭?

最佳答案

  1. 一般来说,严格模式在 MySQL 中是首选,因为它可以帮助您避免一些常见错误,例如本例。

  2. 当您选择未包含在没有任何聚合的 GROUP BY 子句中的列时,MySQL 不使用严格模式可能会返回任何随机行,并且您不能对将返回哪一行做出任何假设。与许多其他 RDBMS 一样,MySQL 在严格模式下会引发错误,以便您被迫修复查询。

  3. 要正确编写查询,您首先需要弄清楚您想要获取 order_dateamount 的哪些数据 - 例如应该是客户的最新订单还是其他什么。

关于MYSQL严格模式,如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52051050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com