1055: Expression not in GROUP BY (only_full_group_by)
MySQLNe demek?
SELECT listesinde ya da HAVING/ORDER BY içinde, GROUP BY'a dahil olmayan ve toplama fonksiyonuna sarılmamış bir sütun kullanıldı. ONLY_FULL_GROUP_BY SQL modu etkin olduğu için MySQL bu belirsiz (nondeterministik) ifadeyi reddediyor.
Neden olur?
Sorgu, gruplanan sütunlar dışında bir sütunu doğrudan seçiyor ancak o sütun her grup için tek bir değere sahip olmayabilir. MySQL 5.7+ sürümlerinde ONLY_FULL_GROUP_BY varsayılan olarak açıktır; eski, gevşek GROUP BY davranışına dayanan sorgular bu hatayı verir.
Nasıl çözülür?
İlgili sütunu ya GROUP BY listesine ekleyin ya da bir toplama fonksiyonuyla sarın (MAX(), MIN(), ANY_VALUE()). Değerin gerçekten grup içinde tekil olduğunu biliyorsanız ANY_VALUE() belirsizliği bilinçli olarak bastırır. Sorguyu düzeltmek yerine modu kapatmak (sql_mode'dan ONLY_FULL_GROUP_BY çıkarmak) yanlış sonuç riskini geri getirir; tercih edilmemelidir.
Aynı motorda diğer kayıtlar
- 1553Cannot drop index needed in a foreign key constraint
- 3948Loading local data is disabled; this must be enabled on both the client and server sides
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key
- 1267Illegal mix of collations
- 1030Got error N from storage engine
- 1197Multi-statement transaction required more than 'max_binlog_cache_size'
- 1785Statement violates GTID consistency