Questo MySQL Query ha trucchi nascosti?
-
18-09-2019 - |
Domanda
Spero che questo non è una questione terribilmente ottuso. Ho notato che MySQL mi permette di fare nuovamente riferimento al campo "MNTH" nel mio gruppo e l'ordine. Questo non è il caso in ogni motore di db con cui ho lavorato. Qualcuno può confim che questo è un approccio OK?
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
Soluzione
E 'OK. Da http://dev.mysql.com/doc/refman/5.0 /en/select.html :
Un select_expr può essere dato un alias utilizzando AS nome_alias. L'alias viene utilizzato come nome della colonna della espressione e può essere utilizzato in GROUP BY, ORDER BY o HAVING.
Non mi piace che la clausola LIKE però. Non c'è un'altra colonna è possibile verificare, invece di dover eseguire una come in una stringa?
Altri suggerimenti
Questo è accettabile in MySql:
vedi qui: http: // dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html
Si noti che se si sta cercando di seguire SQL standard, non è possibile utilizzare espressioni in clausole GROUP BY. voi può funzionare a questa limitazione utilizzando un alias per l'espressione ...
... che implica che è possibile utilizzare espressioni con MySql.
Non so su eventuali interni di MySQL, ma ho usato una query simile nel nostro sistema produttivo, e fino ad oggi la query non è andato in crash ancora. Quindi questo non è un MySQL nucleo di hacker risposta, solo la mia osservazione.
Ah, dimenticavo: GARANZIA: Solo perché io dico che non vedo grattacapi, non significa che non ce ne sono; -)
IMHO, la query sembra a posto per MySQL.
standard SQL non consente riferimenti a alias di colonna in una clausola WHERE ma è possibile utilizzare l'alias in GROUP BY, ORDER, o che ha clausole di fare riferimento alla colonna.
http://dev.mysql.com /doc/refman/5.0/en/problems-with-alias.html