2010-07-30 3 views
1

발생 값이 나는이 테이블에서 중복을 선택하려고 해요 :SQL SELECT> 1

snr zip 
01 83 
02 82 
03 43 
04 28 

예상 결과는 빈 테이블입니다. 사촌 복제물이 없습니다.

나는이 쿼리를 시도했다 :

SELECT snr, zip 
FROM student 
GRUOP BY snr 
HAVING (COUNT(zip) > 1) 

하지만 등, 구문 오류가 있음을, 그리고는 집계 함수를 조회하는 것을 시도하고 있다고는 ..

+1

이 그룹은 잘못된 철자가되어 –

+7

첫 번째 문제에 대한 –

답변

6

그것은 당신처럼 보인다 같은 COUNT(zip) 같이 SELECT 열에서 zip을 제거하거나 다른 집계 함수에서 그것을 포장 중 하나가 필요합니다

SELECT snr, COUNT(zip) 
FROM  student 
GROUP BY snr 
HAVING (COUNT(zip) > 1) 

자세한 내용은 @OMG Ponies's answer을 확인하십시오.

+1

+1 -. 또한 영업 이익은 문제를 일으킬 수 GROUP을 맞춤법이 틀린 – JNK

+0

. 감사합니다. 내가 이것을 사용하고 작동합니다. – jdnhldn

+0

+1 : 처음 이었지만 약간 다르게 나타났습니다. –

5

사용 : 표준 SQL 집계 함수 (COUNT, MIN, MAX, 등)에 포장되지 않은 SELECT 절에 열이 GROUP BY에 정의 될 필요가해야

SELECT snr, zip 
    FROM student 
GROUP BY snr, zip 
    HAVING COUNT(DISTINCT zip) > 1 

. 그러나 MySQL and SQLite allow for columns to be omitted. .? 또한

를 사용 COUNT (DISTINCT 또는 잘못된 반응 위험이 있습니다

어떤 데이터베이스
+0

에, 당신은 괄호를 놓쳤습니다. 그것이 있어야 하는가 : HAVING (COUNT (DISTINCT zip)> 1) ? – jdnhldn

+0

@jdnhldn : Thx - 오타를 수정했습니다. 하지만 아니요 - 괄호 안에 HAVING 절에 무엇이든 넣을 필요가 없습니다. HAVING 절은 WHERE 절과 같습니다. 단지 WHERE 절에서 집계 함수를 사용할 수 없다는 점만 다릅니다. 따라서 HAVING에서 사용합니다. SNR을 선택, COUNT (우편) 학생 그룹에서 SNR HAVING (COUNT (우편)> 1) 내가 잘못 시까 : 이미 선택에 지퍼를 계산하고 같은 갖는 경우 IMO 별개의 –

+0

은 필요하지 않습니다 ? – jdnhldn