Frage

Ich hoffe, das ist keine schrecklich dumme Frage.Mir ist aufgefallen, dass MySQL es mir ermöglicht, in meiner GRUPPE und BESTELLUNG auf das Feld „Mnth“ zurückzugreifen.Dies ist nicht bei jeder Datenbank-Engine der Fall, mit der ich gearbeitet habe.Kann jemand bestätigen, dass dies ein guter Ansatz ist?

SELECT DATE_FORMAT(FROM_UNIXTIME(`swauditlogs`.`dateline`),'%Y-%m') AS Mnth, Count(`swauditlogs`.`ticketid`) AS Count
FROM swauditlogs LEFT JOIN swtickets ON swauditlogs.ticketid = swtickets.ticketid
WHERE swauditlogs.actionmsg Like 'Ticket status changed from:%to: Closed'
GROUP BY Mnth
ORDER BY Mnth DESC
War es hilfreich?

Lösung

Es ist in Ordnung.Aus http://dev.mysql.com/doc/refman/5.0/en/select.html:

Einem select_expr kann mit AS alias_name ein Alias ​​zugewiesen werden.Der Alias ​​wird als Spaltenname des Ausdrucks verwendet und kann in GROUP BY-, ORDER BY- oder HAVING-Klauseln verwendet werden.

Allerdings gefällt mir diese LIKE-Klausel nicht.Gibt es nicht eine andere Spalte, die Sie testen können, anstatt ein LIKE für eine Zeichenfolge ausführen zu müssen?

Andere Tipps

Das ist in MySql akzeptabel:

siehe hier: http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html

Beachten Sie, dass, wenn Sie versuchen, Standard-SQL, können Sie nicht verwenden Ausdrücke in GROUP BY-Klauseln.Du können diese Einschränkung umgehen, indem Sie Verwenden eines Alias für den Ausdruck...

...was bedeutet, dass Sie Ausdrücke mit MySql verwenden können.

Ich weiß nicht, über alle MySQL-Interna, aber ich verwendet, um eine ähnliche Abfrage in unserem Produktionssystem, und bis heute hat sich die Abfrage nicht abgestürzt es noch nicht. Das ist also keine MySQL Core Hacker Antwort, nur meine Beobachtung.

Oh, ich vergaß: HAFTUNGSAUSSCHLUSS: Nur weil ich sage, dass ich keinen gotchas sehen, bedeutet nicht, es gibt keine; -)

Meiner Meinung nach sieht die Abfrage für MySQL in Ordnung aus.

Standard-SQL lässt Verweise auf Spaltenaliase in einer WHERE-Klausel nicht zu, Sie können den Alias ​​jedoch in den Klauseln GROUP BY, ORDER BY oder HAVING verwenden, um auf die Spalte zu verweisen.

http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top