3
我試圖瞭解MySql 5.7如何工作。在查詢波紋管SQLSTATE [42000]:語法錯誤或訪問衝突:1055表達式#2
SELECT
r.*,
CONCAT(u.fname, ' ', u.lname) AS name
FROM
`events` AS r
LEFT JOIN `users` AS u
ON r.user_id = u.id
WHERE r.event_id = 1
GROUP BY r.user_id
ORDER BY r.date ;
我得到一個錯誤「SELECT列表是不是在GROUP BY子句中包含非聚合列‘r.id’,這並不功能依賴於BY子句中的列組,這是不兼容的sql_mode = only_full_group_by [代碼:42000] 「
但是這樣的查詢工作正常:
SELECT
r.id,
r.event_id,
r.user_id,
r.date
CONCAT(u.fname, ' ', u.lname) AS name
FROM
`events` AS r
LEFT JOIN `users` AS u
ON r.user_id = u.id
WHERE r.event_id = 1
GROUP BY r.user_id, r.event_id, r.id, r.date
ORDER BY r.date ;
由於我工作在本地主機上,我可以更改my.ini文件和設置的sql_mode爲」 STRICT_ALL_TABLES ,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER「
但是當上線時這將會成爲一個問題,因爲不會有很多人能夠訪問my.ini文件,尤其是共享主機。
在我看來,位無效宣佈每個字段和相應的聚合。
由於我在MySql中的知識只是初學者,有沒有更好的方法來編寫上述查詢。在我需要從單個表中抽取10或20個字段的情況下,將所有這些字段合併在一起看起來有點愚蠢。
對OP的注意:select語句中的聚合函數就像'count()','sum()'等等......你正在評估分組的所有值。 – Ray
正確concat不是聚合函數是線性的.. group_concat是一個聚合函數 – scaisEdge
DuH !!好,趕上,編輯我的評論 – Ray