2012-08-24 3 views
1

나는 다음과 같은 형식의 행이있는 테이블이 있습니다찾기 중복 행

transactionDate, purchaseOrderId 
8/8/2012, 55 
8/9/2012, 55 
8/8/2012, 88 
8/9/2012, 55 
8/10/2012, 77 

내가 transactionDate 및 purchaseOrderId 모두 정확한을 모든 행을 찾고 싶어요. 그래서 다음 두 행이 중복됩니다

SELECT 
    transactionDate, purchaseOrderId 
FROM 
    purchases 
GROUP BY 
    transactionDate, purchaseOrderId 
HAVING COUNT(*) > 1; 

그러나 그것은 8 월 9 결과에 추가하여 8 월 8 일 결과를 반환 : 나는 다음과 같은 쿼리를 사용하여 시도

8/9/2012, 55 
8/9/2012, 55 

. 각 날짜의 모든 트랜잭션을 반환하는 대신 두 열이 중복 된 필드 만 반환하도록하려면 어떻게해야합니까?

감사합니다.

+1

쿼리가 나에게 맞아 보입니다. 데이터를 다시 확인할 가치가있을 것 같습니까? – FJT

+0

@FionaT - 다시 보니 당신이 실제로 맞는 것 같습니다. 백만 개의 중복 된 행을 기대하지는 않았지만 체크 한 임의의 행이 중복되었습니다 (테이블은 2 천만 행 이상입니다). 어쩌면 원래의 쿼리가 정확했을 수도 있습니다. – David

답변

2
SELECT 
    transactionDate, purchaseOrderId, COUNT(*) CNT 
FROM 
    purchases 
GROUP BY 
    transactionDate, purchaseOrderId 
HAVING 
    CNT > 1 
ORDER BY 
    CNT ASC; 
0

transactionDate 열을 'date'데이터 유형으로 변경하고 적절한 날짜 형식 (예 : 'YYYY-MM-DD')으로 값을 삽입하십시오. 다음과 같이 값을 입력하십시오 :

INSERT into purchases values ('2012-08-09', 55); 

그런 다음 위의 서면 쿼리를 사용하십시오. 원하는 결과를 얻을 수 있습니다.

+0

열은 이미 날짜 형식이며 적절한 날짜 형식을 가지고 있습니다. 내 자신의 질문에 내 의견을 응답에서 언급했듯이 내 질문에 쿼리가 이미 정확한 응답을 제공하고 있지만 너무 많은 중복 행이있을 것이라고 기대하지 않았다. – David