문제

나는 이것이 끔찍한 둔감 한 질문이 아니기를 바랍니다. MySQL을 통해 그룹과 주문의 "Mnth"필드를 다시 참조 할 수 있습니다. 내가 함께 일한 모든 DB 엔진에서는 그렇지 않습니다. 누구든지 이것이 괜찮은 접근법임을 칭찬 할 수 있습니까?

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
도움이 되었습니까?

해결책

괜찮아. 에서 http://dev.mysql.com/doc/refman/5.0/en/select.html:

select_expr은 alias_name으로 사용하는 별칭을 제공 할 수 있습니다. 별칭은 Expression의 열 이름으로 사용되며 클로스에 의해 그룹에 사용할 수 있습니다.

그래도 절과 같은 조항이 마음에 들지 않습니다. 문자열에서 같은 것을 수행하는 대신 테스트 할 수있는 다른 열이 없습니까?

다른 팁

그것은 mySQL에서 허용됩니다 :

여기를 봐: http://dev.mysql.com/doc/refman/55.1/en/group-by-hidden-columns.html

표준 SQL을 따르려고하는 경우 조항으로 그룹에서 표현식을 사용할 수 없습니다. 표현식에 별명을 사용 하여이 한계를 해결할 수 있습니다 ...

... MySQL과 함께 표현식을 사용할 수 있음을 암시합니다.

MySQL 내부에 대해 잘 모르겠지만 생산 시스템에서 비슷한 쿼리를 사용했으며 오늘까지 쿼리가 아직 충돌하지 않았습니다. 따라서 이것은 MySQL Core Hacker 답변이 아니라 내 관찰입니다.

오, 나는 잊었다 : 보증 면책 조항 : 내가 gotchas를 보지 않는다고 말했기 때문에 아무것도 없다는 것을 의미하지는 않습니다. ;-)

IMHO, 쿼리는 MySQL에 대해 괜찮아 보입니다.

표준 SQL은 WHERE 절에서 열 별칭에 대한 참조를 불러 일으키지 만, 열을 참조하여 클로스를 그룹화하거나, 주문 또는 클로스를 사용하여 별명을 사용할 수 있습니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top