DBAtlas · Veritabanı operasyon atlası

1055: Expression not in GROUP BY (only_full_group_by)

MySQL

Ne 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.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar