MySQL Lists are EOL. Please join:

List:German« Previous MessageNext Message »
From:BG Date:January 15 2019 8:28pm
Subject:AW: MySQL Update 5.7, GROUP BY
View as plain text  
Hallo Roland,

 

danke, nein es werden in der gleichen Abfrage noch andere Spalten ausgelesen
.. daher hatte ich die Anfrage wie MySQL 5.7 es erwartet im GROUP BY
statement um die id ergänzt. Die Afrage funktioniert dann auch, allerdings
werden mir dann anstatt der bisher gruppierten Einträge die einzelnen
Einträge angezeigt, wegen GROUP BY url UND id!

 

Die id ist numerisch und fortlaufend (auto increment). Die url ist nicht
einzigartig und kommt häufiger vor, ist also doppelt vorhanden.

Ich habe noch immer keine Lösung!

 

Grüße 

Bert 

 

Von: Roland Müller [mailto:rolmur1@stripped] 
Gesendet: Dienstag, 15. Januar 2019 21:22
An: BG; mysql-de@stripped
Betreff: MySQL Update 5.7, GROUP BY

 

Hallo,

 

deine ursprüngliche Abfrage ist und war illegal in Standard SQL: 

*	in der SELECT Liste dürfen nur Felder/Spalten stehen, die auch in
GROUP BY verwendet werden. 
*	'url' aus deinem Beispiel ist dann illegal in der ersten Abfrage.

https://dev.mysql.com/doc/refman/5.5/en/group-by-handling.html 

MySQL 5.5 erlaubte trotzdem die Verwendung von Felder, die nicht in GROUP BY
stehen, allerdings hat das nur Sinn, wenn der jeweilige Wert innerhalb der
Gruppe immer derselbe ist: jede Zeile mit derselben id müsste dann immer
dieselbe url haben. Das ist offensichtlich bei deinen Daten nicht der Fall,
da ja die neue Abfrage nicht das gewünschte Ergebnis bringt.

Eine Antwort auf deine Frage ist schwierig ohne zu wissen, was das Feld id
eigentlich bedeutet? Wenn du nur die Anzahl der Zeilen pro URL haben willst,
könnte die Abfrage so aussehen:

*	SELECT url, COUNT(*) AS anzahl
*	FROM searchengines
*	GROUP BY url
*	ORDER BY COUNT(*)

Gruss,

Roland

On 1/14/19 5:53 PM, BG wrote:

Hi,
 
 
 
ich habe eine DB auf 5.7 geupdated .. seither habe ich in einer Abfrage die
Daten wie folgt aus der DB gelesen und gruppiert ..
 
 
 
--
 
SELECT COUNT(id) AS anzahl, searchengines.* 
 
FROM searchengines 
 
GROUP BY url 
 
ORDER BY COUNT(id) 
 
DESC LIMIT 10
 
--
 
Da dies mit 5.7 nicht mehr möglich ist, musste ich die Query anpassen, um
keine Fehlermedung zu erhalten:
 
 
 
Expression #2 of SELECT list is not in GROUP BY clause and contains
nonaggregated column 'db.searchengines.id' which is not functionally
dependent on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by
 
 
 
Daher habe ich die Abfrage wie folgt geändert ..
 
--
 
SELECT COUNT(id) AS anzahl, searchengines.id,  searchengines.id,
searchengines.url,  
 
FROM searchengines 
 
GROUP BY url, id
 
ORDER BY COUNT(id) 
 
DESC LIMIT 10
 
--
 
 
 
Jetzt erhalte ich zwar keinen Fehler mehr, allerdings werden die
Ergebniszeilen nicht gruppiert ausgegeben, sondern einzlen. Wie kann ich die
Abfrage ändern, damit alle URLs gruppiert nach url ausgegeben werden?
 
 
 
Danke für die Hilfe!
 
 
 
Grüße 
 
Bert
 
 

 


Thread
MySQL Update 5.7, GROUP BYBG14 Jan 2019
AW: MySQL Update 5.7, GROUP BYBG14 Jan 2019
AW: MySQL Update 5.7, GROUP BYBG15 Jan 2019
AW: MySQL Update 5.7, GROUP BYBG15 Jan 2019
  • Re: MySQL Update 5.7, GROUP BYFrank Rasche15 Jan 2019