我剛剛升級到mysql 5.7.14,並導致我的某個查詢出現問題,並且出現錯誤。如何在不更改my.ini文件的情況下讓我的查詢mysql 5.7兼容
#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標準,並沒有什麼錯誤消息究竟意味着什麼?
我只希望它按月分組,因爲我在過去六個月 –
獲得月度數據要擺脫錯誤的,你可以'GROUP BY DATE_FORMAT(InvoiceDate,「%Y-%M」),EXCHANGERATE ,VATValue'。如果你認爲這是錯誤的,那麼你的原始查詢是沒有意義的。 –