Rolf B: Wordaround Alias-Name

Beitrag lesen

Hallo mitleser,

so, oder über ein geschachteltes Statement. Das innere SELECT kann man als temporären View sehen.

SELECT foo, SUM(foo)
FROM (SELECT bar, CASE...END foo FROM ...)
GROUP BY bar

Weshalb male ich das rot an: es ist nicht korrekt, foo und SUM(foo) gleichzeitig zu nutzen. SUM(foo) setzt ein GROUP BY voraus, und eine im SELECT angegebene Spalte sollte entweder ein Gruppierschlüssel sein ODER aggregiert werden.

Das Verrückte ist, dass mysql diesen Fehler nicht abweist, sondern einfach den Spaltenwert aus irgendeiner Zeile der Gruppe verwendet. D.h. der Wert von foo ist dann von der Sortierung der aggregierten Zeilen abhängig (eine Sortierung, die nicht aus dem ORDER BY kommt sondern aus der Art wie die Table gelesen wurde) und deshalb nicht klar definiert. Wenn du unbedingt einen Zufallsgenerator brauchst, gibt es einfachere und bessere...

Rolf

--
sumpsi - posui - clusi