2013-08-14 4 views
0

불만을 토로 한 질문에 대해 유감스럽게 생각합니다.MySQL 동일한 열에 일치하는 값을 가진 행의 첫 번째 행과 마지막 행을 찾습니다.

내가이 쿼리를 사용

:

select * 
from table 
where unique_id in (
    select unique_id from table group by unique_id having count(*) > 1 
) 

나에게 같은 결과를 제공 다음 : 내가 더 그 결과를 수정하고 나에게 처음과 마지막을 떠나 쿼리를하고 싶습니다

id date   unique_id 
12 3/3/2013  asdf1 
13 3/4/2013  asdf1 
14 3/5/2013  asdf1 
15 3/6/2013  asdf1 
16 3/8/2013  qwer2 
17 3/9/2013  qwer2 
18 3/10/2013 qwer2 
19 3/11/2013 zxcv3 
20 3/12/2013 zxcv3 
21 2/2/2012  jkl 
22 2/3/2012  jkl 
22 2/4/2012  jkl 
23 2/5/2012  jkl 
24 2/5/2012  jkl 
25 2/6/2012  jkl 
26 2/7/2012  jkl 

일치하는 unique_id의 각 집합에서 각각

**의 각 집합의 행은 결과가 항상 ID + 1 및 날짜 + 1 일 패턴을 따릅니다.
** COUNT (*)> 1을 가진이 조건 즉 그래서 1

에 동일 해집니다 레코드는 난 단지 반환하는 쿼리를하고 싶습니다 없습니다 :

12 3/3/2013 asdf1 
15 3/6/2013 asdf1 
16 3/8/2013 qwer2 
18 3/10/2013 qwer2 
19 3/11/2013 zxcv3 
20 3/12/2013 zxcv3 
21 2/2/2012 jkl 
26 2/7/2012 jkl 

감사합니다 !

+0

사용하시는 테이블의 덤프를 제공해 주시겠습니까? –

+0

안녕하세요, 테이블의 어떤 정보가 구체적으로 필요합니까? 실제 테이블에는 민감한 정보가 들어 있지만 그 쿼리를 실행하면 그 결과는 내가 게시 한 것과 동일합니다. – user2278120

+0

나중의 ID 열이 이전 날짜의 ID 열보다 작은 unique_id에 대한 날짜 쌍이 테이블에있을 수 있습니까? –

답변

2

hte ID와 날짜 열의 순서가 일치하므로 다음을 사용할 수 있습니다.

SELECT id 
     ,date 
     ,unique_id 
FROM (
     SELECT min(id) as id 
       ,min(date) as date 
       ,unique_id 
       ,count(id) as rec_count 
     from table 
     group by 
       unique_id 
     union 
     SELECT max(id) as id 
       ,max(date) as date 
       ,unique_id 
       ,count(id) as rec_count 
     from table 
     group by 
       unique_id 
     ) SQ 
WHERE SQ.rec_count > 1 
+0

그룹 기능 오류가 잘못 사용되었습니다. – user2278120

+0

죄송합니다. 게시물에 오타를 입력하십시오 (지금 수정되었습니다). 'WHERE' 절을'WHERE SQ.rec_count> 1'로 변경하십시오. –

+0

잘 했어, 고마워! – user2278120

관련 문제