2015-01-28 2 views
0

그래서 테이블의 몇 명을 조니라고 부르려면 다음 쿼리를 실행해야합니다.뭔가가 열에 나타나는 횟수 계산 및 기록하기

쿼리 :

Select count(*) from mytable where first = 'Johnny'; 

이 결과로 나에게 2 줄 것입니다.

그러나 내가 원하는 것은 카운트 열에이 숫자를 기록하여 최종 결과가 이와 같이 나타납니다.

+--------+----------+ 
| First | COUNT | 
+--------+----------+ 
| Johnny |  2 | 
| Diane |  1 | 
| Johnny |  2 | 
| Harold |  1 | 
| Amy |  3 | 
| Roy |  2 | 
| Amy |  3 | 
| Amy |  3 | 
| Roy |  2 | 
+--------+----------+ 

이러한 유형의 결과가 발생할 수있는 쿼리 나 절차가 있습니까?

+1

가능한 중복 [최대 시간을 카운트 레코드가 데이터베이스 테이블에 나타납니다] (http://stackoverflow.com/questions/4453342/count-maximum-times-record-appears-in-data) –

답변

1

가 정확한 출력을 얻으려면, 당신은 use a subquery에 필요의

select 
    mytable.First, 
    counts.`COUNT` 
from 
    mytable 
join (
    select 
     First, 
     count(*) `COUNT` 
    from 
     mytable 
    group by 
     First 
) counts on mytable.First = counts.First; 
+0

감사합니다. – Offer

0

이 시도 :

SELECT T1.First, T2.COUNT 
FROM mytable T1 JOIN 
    (SELECT First, COUNT(*) as COUNT 
     FROM mytable 
     GROUP BY First) as T2 ON T1.First=T2.First 

는 결과가 될 것입니다 :

+--------+----------+ 
| First | COUNT | 
+--------+----------+ 
| Johnny |  2 | 
| Diane |  1 | 
| Johnny |  2 | 
| Harold |  1 | 
| Amy |  3 | 
| Roy |  2 | 
| Amy |  3 | 
| Amy |  3 | 
| Roy |  2 | 
+--------+----------+ 
+1

별로 없습니다 (이름 열이 반복됨에 유의하십시오). 이 정확한 출력을 얻는 유일한 방법은 하위 쿼리를 사용하는 것입니다. – Phylogenesis

+0

@Phylogenesis : 내 대답이 업데이트되었습니다. –

관련 문제