2012-07-04 3 views
2

음 MySQL의를 등으로 그룹을 열 이상을 사용하는 경우 작동하는 방법 :그룹별로 여러 열을 사용하는 경우 mysql 작동 방법은 무엇입니까?

MySQL이이 그룹에 결과가 설정 사용되는 열을 아는 방법
select 
    a.nome, 
    b.tb2_id, 
    count(c.tb2_id) as saida 
from tb1 a 
left join tb2 b on a.tb1_id = b.tb1_id 
left join tb3 c on b.tb2_id = c.tb2_id 
group by a.tb1_id, b.tb2_id 
order by a.tb1_id desc 

?

나는 그것을 순서대로 수행 할 것이라고 생각했지만 그룹을 'b.tb2_id, a.tb1_id'로 변경했지만 어떤 변경이나 같은 결과를 만들지는 않습니다.

답변

3

group by a.tb1_id, b.tb2_id 그룹으로 처리 될 같을 a.tb1_idb.tb2_id 모두 a.tb1_idb.tb2_id 필요성 쌍의기를 의미한다.

+0

가장 좋은 설명 지금까지 본적이 있습니다. – Ash

0

order by 절만 행의 순서에 영향을줍니다.

group by 절은 데이터 집계에 영향을줍니다. mysql은 다른 대부분의 데이터베이스와 달리 데이터가 선택되지 않은 열로 그룹화 될 수 있도록하며, 그룹화되지 않은 열을 기준으로 집계되지 않도록 할 수 있습니다. 이 마지막 옵션이 실행되는 경우 (a.nome이 그룹화되지 않음) mysql은 각 그룹에 대해 행 첫 번째로 행을 반환합니다. 이 쿼리를 실행하려고하면 다른 모든 데이터베이스에서 SQL 구문 예외가 throw됩니다.

관련 문제