質問

これが非常に曖昧な質問でないことを願っています。MySQL では、GROUP と ORDER の「Mnth」フィールドを参照できることに気付きました。これは、私がこれまでに使用したすべての DB エンジンに当てはまるわけではありません。これが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
役に立ちましたか?

解決

それはOKです。 http://dev.mysql.com/doc/refman/5.0から/en/select.htmlするます:

  

のselect_exprはALIAS_NAME AS使用してエイリアスを与えることができます。エイリアスは式のカラム名として使用され、GROUP BY、ORDER BY、またはHAVING句で使用することができます。

でも、私はそのLIKE句が好きではありません。あなたの代わりに文字列でLIKEを実行するのでテストすることができます別の列はありませんか?

他のヒント

これは MySQL では許容されます。

ここを参照してください: http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html

標準のSQLに従うことを試みている場合、条項によってグループで式を使用することはできないことに注意してください。あなたが この制限を回避するには、次の操作を行います。 エクスプレッションにエイリアスを使用...

...MySql で式を使用できることを意味します。

私は、MySQLの内部のことは知らないが、私は、私たちの生産システムに類似したクエリを使用して、今日まで、クエリはまだそれをクラッシュしていません。だから、これは何のMySQLのコアハッカーの答えは、ちょうど私の観察ではありません。

ああ、私は忘れてしまった:の保証の否認:の私は、私は何の落とし穴を見ていないと言うからといって、何も存在しないという意味ではありません; - )

IMHO、クエリは、MySQLのために大丈夫に見えます。

標準SQLはWHERE句で列の別名への参照を許可していませんが、あなたは、GROUP BY、ORDER BY、または列を参照するためにHAVING句で別名を使用することができます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top