我刚刚升级到 mysql 5.7.14,它导致我的一个查询出现问题,我得到了错误。
#1055 - SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“salesinvoice.InvoiceDate”,它在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容
现在解决方案显然是编辑 my.ini 文件并添加这一行
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
现在这工作了,现在我的查询运行良好,但我宁愿让我的查询符合 mysql 5.7,而不是必须在我的 ini 文件中添加行,这可能在我们的服务器上工作,也可能不工作。我无法访问服务器上的 ini 文件,但我在本地服务器上运行 wampserver 3.06。
这是我的查询
SELECT DATE_FORMAT(`InvoiceDate`,'%Y-%m') as InvoiceDate,
ROUND((SUM(`Unit_Cost`*`Quantity`)*`ExchangeRate`)+`VATValue`,2) as amount
FROM `salesinvoice`
LEFT JOIN `salesinvoice_products`
on `salesinvoice`.`SalesInvoice_id`=`salesinvoice_products`.`SalesInvoice_id`
WHERE `InvoiceDate` < Now()
and `InvoiceDate` > DATE_ADD(Now(), INTERVAL- 6 MONTH)
GROUP BY Month(`InvoiceDate`)
如何将我的查询更改为 mysql 5.7 兼容,错误消息的真正含义是什么?