2013-05-09 2 views
0

나는이 같은 구조의 MySQL의 테이블이 평가 중복 기록을 찾기 order_id 그룹에 의해 정렬 된 결과를 내림차순으로 표시하십시오.MySQL은 2 열

예 :

MySQL의 테이블

order_id customer_name customer_email_address 
1   pippo   [email protected] 
2   pippo   [email protected] 
3   pluto   [email protected] 
4   caio    [email protected] 
5   pippo4   [email protected] 
6   pluto   [email protected] 

결과

6   pluto   [email protected] 
3   pluto   [email protected] 
4   caio    [email protected]  
1   pippo   [email protected] 
2   pippo   [email protected] 

결과 6 3주 동일한 CUSTOMER_NAME 결과 4 일주 동일한 customer_email_address 결과 (1) 및 이주 같은 고객 이름

Order_id 5는 중복이 없기 때문에 결과에 없습니다.

+0

. 나는 결과의 순서를 이해하지 못한다. 왜 3이 첫 번째가 아니고 6이 아닌가? – Justin

+0

@Pottillo 내가 가장 낮은 순서에서 결과가 필요하기 때문에 처음으로 요구 사항을 잘못 이해 했으므로 – Stephan

+0

@Justin 때문에 쿼리를 업데이트했다. 번호. 그래서 : 다수의 "중복 그룹"이 주어지면, 먼저 나타나는 순서 번호는 더 높은 순서 번호를 가지고, 그 다음에는 모든 반복적 인 복제본이 따라 와야합니다. – Pottillo

답변

0

이 시도 : 당신은 'ORDER_ID 그룹 (내림차순)으로 정렬 결과를'무엇을 의미하는지

SELECT 
    order_id, 
    customer_name, 
    customer_email_address 
FROM 
    my_table 
WHERE 
    order_id IN (
     SELECT 
      order_id 
     FROM 
      my_table 
     GROUP BY 
      customer_name 
     HAVING 
      COUNT(*)>1 

     UNION 

     SELECT 
      order_id, 
     FROM 
      my_table 
     GROUP BY 
      customer_email_address 
     HAVING 
      COUNT(*)>1 
    ) 
ORDER BY 
    customer_name, 
    customer_email_address, 
    order_id DESC