- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的主机很快从 MySQL 5.7 切换到 8.0.33,因此默认启用 ONLY_FULL_GROUP_BY。
由于缺少权限,我现在无法将 ONLY_FULL_GROUP_BY 添加到 SQL 模式以进行测试。因此,当主机更新了 MySQL 版本后,也不可能再将其关闭。
因此,我现在唯一能做的就是调整稍后使用 ONLY_FULL_GROUP_BY 的查询,如果正确完成,它们现在也应该可以工作。
我是一个懒惰的程序员,一直在做这样的事情:
SELECT *
FROM
table
WHERE
...
GROUP BY xyz
ORDER BY abc
如果在 SELECT 查询中使用 GROUP BY,我就不能再使用 *(=所有列),对吗? :-(
示例 1:
SELECT headhunter, COUNT(*) AS amount
FROM table
GROUP BY headhunter
我是否还需要在此处将金额添加到 GROUP BY 中?
示例 2:
SELECT *, departure, DATE_FORMAT(departure,'%d.%m.%y') AS departure2
FROM table
WHERE carnumber1=''
GROUP BY shipid
ORDER BY departure DESC
这里发生了什么?我在这里不能再使用 * 了吗?
我需要删除*并将shipid添加到SELECT,还有departure(departure2也是吗? ) 到 GROUP BY 并 shipid 到 ORDER BY?
此外,我还必须查看我的 PHP 代码,在 while 循环中执行此查询后处理哪些列,并将它们全部添加到 SELECT、GROUP BY 和 ORDER?!?
示例 3:
SELECT customer
FROM table
WHERE carnumber1!=''
GROUP BY customer
ORDER BY customer ASC
这里不需要调整,或者?
示例 4:
SELECT customer
FROM table
WHERE carnumber1!=''
AND preparation>date_sub(NOW(),INTERVAL 6 MONTH)
GROUP BY customer
ORDER BY customer ASC
也不调整?
示例 5:
SELECT customer
FROM table
GROUP BY customer
HAVING MAX(preparation)<=date_sub(NOW(), INTERVAL 6 MONTH)
ORDER BY customer ASC
在 SELECT、GROUP 和 ORDER 中是否需要列准备(因为 HAVING)?
示例 6:
SELECT DATE_FORMAT(delivery,'%M %Y'), COUNT(*) AS amount, SUM(purchase_price) AS summed
FROM table
GROUP BY MONTH(delivery), YEAR(delivery)
只需将 delivery 添加到 SELECT 并将 purchase_price 添加到 GROUP BY?
感谢您的所有提示、查询修复、解释!
最佳答案
以下是我如何修改每个示例的查询:
示例 1:
SELECT headhunter, COUNT(*) AS amount
FROM table
GROUP BY headhunter, amount;
示例 2:
SELECT shipid, departure, DATE_FORMAT(departure,'%d.%m.%y') AS departure2
FROM table
WHERE carnumber1=''
GROUP BY shipid, departure, departure2
ORDER BY shipid, departure DESC;
示例 3:
No adjustment needed as it's already compliant.
示例 4:
No adjustment needed; it's already compliant.
示例 5:
SELECT customer, MAX(preparation) AS max_preparation
FROM table
GROUP BY customer
HAVING max_preparation <= date_sub(NOW(), INTERVAL 6 MONTH)
ORDER BY customer ASC;
示例 6:
SELECT YEAR(delivery), MONTH(delivery), COUNT(*) AS amount, SUM(purchase_price) AS summed
FROM table
GROUP BY YEAR(delivery), MONTH(delivery);
SELECT 子句中的所有列需要成为 GROUP BY 子句的一部分或使用聚合函数(如 COUNT、SUM 或 MAX)。您可以使用 SELECT 子句中声明的别名或在 ORDER BY 子句中使用 SELECT 子句中的列。必须遵循这些准则,才能使您的查询与 ONLY_FULL_GROUP_BY 模式兼容。
关于sql - 更新 SQL 模式 ONLY_FULL_GROUP_BY 的 GROUP BY 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77271859/
在查询中发现 sql_mode=only_full_group_by 错误。我尝试了很多方法来修复它。更改了 sql_mode=''。但我仍然收到此错误。 PDOException: SQLSTATE
我不小心启用了 ONLY_FULL_GROUP_BY 模式,如下所示: SET sql_mode = 'ONLY_FULL_GROUP_BY'; 如何禁用它? 最佳答案 解决方案 1:从 mysql
这个问题已经有答案了: Error related to only_full_group_by when executing a query in MySql (18 个回答) 已关闭 5 年前。 我
数据库错误错误:SQLSTATE[42000]:语法错误或访问冲突:1055 SELECT 列表的表达式 #27 不在 GROUP BY 子句中,并且包含非聚合列“erp.CFPG.id”,该列在功能
请帮助我纠正 SQL 语法: SELECT DISTINCT kodemk, a.namamk, a.sks, IF( b.status='K', 0, a.smt ) as smt, a.k
我试图让下面的语句与 mysql v5.7.5 一起工作,尽管我真的完全不理解错误消息中的措辞,而且文档也没有帮助我。 有问题的 SQL 语句: SELECT YEARWEEK
我有一个带有 MySQL 服务器版本 5.7.27 的新 VPS 服务器。在这个新的 VPS 中,我上传了一个数据库和一些代码,这些代码是我从以前的服务器上获得的,该服务器具有较旧的 MySQL 服务
我在 MySQL 5.7.14 上遇到 ONLY_FULL_GROUP_BY 问题,即使我设置了 SQL 模式,我似乎也无法禁用它。 我已通过运行此命令将 @@sql_mode 设置为删除 ONLY_
我使用 mysqldump 并得到错误。在我的配置文件中,为 sql_mode 写入了属性,在 mysql 控制台全局和 session 属性中也类似。 [mysqld] sql_mode=IGNOR
我更新了 mysql,我从 MySQL 版本 5.6.17 升级到版本 5.7.14 因为我的 sql 查询有错误 的确,我的很多查询都是这样的: SELECT count (id) as nbr,
我不小心启用了这样的 ONLY_FULL_GROUP_BY 模式: SET sql_mode = 'ONLY_FULL_GROUP_BY'; 如何禁用它? 最佳答案 解决方案 1:从 mysql 控制
我正在将一些旧的 SS 2.4 代码升级到 SS4。执行以下查询时出现以下错误: 错误: Expression #1 of SELECT list is not in GROUP BY clause
我在数据库 mysql (5.7.21) 中有一个表,如下所示: +----------+--------------+-----------+-----------+| id_price | id_
版本:Plesk Onyx v17.8.11_build1708180301.19操作系统:Ubuntu 16.04.4 LTS 在我的日志中出现此错误: AH01071: Got error 'PH
我想要获取“订单”表中但不在“客户”表中的客户。 “快速订购”客户。我写了这个查询: SELECT `email`, `firstname` , `lastname`, `telephone`, `i
我有以下查询: SELECT f.flight_number, f.flight_date, f.airport, a.iata, a.iso3166 AS airport_country_code,
我有这个数据 1 => blue, 2 => red, 3 => red 我想要的是: [1, 2] 禁用 MySql 严格模式,或更具体地说,禁用 ONLY_FULL_GROUP_BY - 我可以做
我正在运行这个 SQL 语句: SELECT *, GROUP_CONCAT(contact) AS contact FROM table4, table3, table2, tab
我尝试将SQLAlchemy的group_by()函数与mysql+mysqlconnector引擎一起使用: rows = session.query(MyModel) \ .ord
SELECT DISTINCT `A/C#` AS `A/C#`, `MyRef` AS `MyRef`, DATEDIFF('2017-06-30', `Date`) AS
我是一名优秀的程序员,十分优秀!