
Mysql üzerinden sorgu yaptığınızda karşılaşacağınız aşağıdaki hatanın çözümü aslında çok basit.
#1055 — Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘…’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Bu komutla MySQL’deki sql modunu değiştirerek basitçe çözülecektir,
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Bu benim sorunuma çözüm oldu. Bunu kullandım, çünkü projemde bunun gibi birçok Sorgu var, bu yüzden bu sql modunu only_full_group_by olarak değiştirdim.
MySQL only_full_group_by
modu açıldığında, kullanım sırasında katı ANSI SQL kurallarının uygulanacağı anlamına gelir. Sorgunuzla ilgili olarak, bu GROUP BY
, proof_type
sütundan iseniz, yalnızca iki şey seçebileceğiniz anlamına gelir :
SO’da GROUP BY
gördüğüm MySQL sorularının büyük çoğunluğunda katı mod kapalı, bu nedenle sorgu çalışıyor, ancak yanlış sonuçlar veriyor. Sizin durumunuzda, sorgu hiç çalışmayacak ve sizi gerçekten ne yapmak istediğinizi düşünmeye zorlayacaktır.
Not: ANSI SQL GROUP BY
, işlevsel olarak seçilen sütun (lar) a bağlı olan sütunları da dahil ederek seçilmesine izin verileni genişletir . İşlevsel bağımlılığa bir örnek, bir tablodaki birincil anahtar sütununa göre gruplama olabilir. Birincil anahtarın her kayıt için benzersiz olması garanti edildiğinden, diğer herhangi bir sütunun değeri de belirlenecektir. MySQL buna izin veren veri tabanlarından biridir (SQL Server ve Oracle AFAIK yapmaz).