2013-08-06 4 views
0

계열 항목의 두 번째 행만 반환하는 보고서를 생성하려고합니다.일련의 테이블 항목에서 두 번째 행을 반환하십시오.

한계/오프셋을 사용할 때 내 반환 값은 한 줄에 불과합니다. 이것은 내가 원하는 것이 아닙니다. 여기

내가 무엇을 가지고 :

HD_TICKET_ID,Created,Timestamp,Full_Name 
.... 
31 2008-04-15 17:26:25 2008-04-15 17:26:25 S. Redacted 
31 2008-04-15 17:26:25 2008-04-16 11:48:34 C. redacted 
31 2008-04-15 17:26:25 2008-04-16 12:18:25 C. redacted 
31 2008-04-15 17:26:25 2008-04-17 15:19:34 M. redacted 
33 2008-04-17 06:23:27 2008-04-17 08:40:24 A. redacted 
33 2008-04-17 06:23:27 2008-04-17 09:18:17 C. redacted 
33 2008-04-17 06:23:27 2008-04-17 08:35:41 C. redacted 
33 2008-04-17 06:23:27 2008-04-17 08:30:00 C. redacted 
33 2008-04-17 06:23:27 2008-04-17 06:23:27 L. redacted 
33 2008-04-17 06:23:27 2008-04-17 15:18:55 M. redacted 
36 2008-04-17 07:37:20 2008-04-17 11:31:19 M. redacted 
36 2008-04-17 07:37:20 2008-04-17 07:37:20 A. redacted 
36 2008-04-17 07:37:20 2008-04-17 07:48:58 A. redacted 
36 2008-04-17 07:37:20 2008-04-17 07:56:34 A. redacted 
36 2008-04-17 07:37:20 2008-04-17 08:04:36 A. redacted 
42 2008-04-17 09:11:28 2008-04-17 09:36:14 M. redacted 
42 2008-04-17 09:11:28 2008-04-17 09:11:28 S. Redacted 
42 2008-04-17 09:11:28 2008-04-23 00:03:20 M. redacted 
42 2008-04-17 09:11:28 2008-04-24 13:06:18 S. Redacted 
42 2008-04-17 09:11:28 2008-04-24 13:06:31 S. Redacted 
.... 

을 반환

SELECT HD_TICKET_ID, 
HD_TICKET.CREATED, 
HD_TICKET_CHANGE.TIMESTAMP, 
USER.FULL_NAME 

FROM `ORG1`.`HD_TICKET_CHANGE`, 
`ORG1`.`USER`, 
`ORG1`.`HD_TICKET` 
WHERE (HD_TICKET_ID = HD_TICKET.ID) 

AND HD_TICKET_CHANGE.USER_ID = USER.ID 

ORDER BY HD_TICKET_ID 

어떤 그러나 제가 원하는 것은 그 각각에 대해 단지 두 번째 줄은; 그래서 출력 이런 식으로 뭔가 보일 것입니다 :

.... 
31 2008-04-15 17:26:25 2008-04-16 11:48:34 C. redacted 
33 2008-04-17 06:23:27 2008-04-17 09:18:17 C. redacted 
36 2008-04-17 07:37:20 2008-04-17 07:37:20 A. redacted 
42 2008-04-17 09:11:28 2008-04-17 09:11:28 S. Redacted 
.... 

답변

0

당신은 세션 변수를 사용할 수 있습니다를, 다음 샘플 코드

당신의 목적으로
select * from 
     (select @rowid:[email protected]+1 as rowid, 
       id, username from user, 
       (select @rowid:=0)as init) as t 
     where rowid%2=0; 

입니다

다음으로, 당신은 당신의 SQL을 쓸 수 있습니다 생각
SELECT * FROM 
    (SELECT @rowid:[email protected]+1 as rowid, 
     HD_TICKET_ID, 
     HD_TICKET.CREATED, 
     HD_TICKET_CHANGE.TIMESTAMP, 
     USER.FULL_NAME 

    FROM `ORG1`.`HD_TICKET_CHANGE`, 
     `ORG1`.`USER`, 
     `ORG1`.`HD_TICKET`, 
     (SELECT @rowid:=0 as init) as rowtable 
    WHERE (HD_TICKET_ID = HD_TICKET.ID) 
     AND HD_TICKET_CHANGE.USER_ID = USER.ID 
    ORDER BY HD_TICKET_ID) as t 
WHERE rowid%2=0 

호프가 도움이됩니다.

+0

이렇게하면 [오류 1248] (http://www.hassmann-software.de/en/mysql-error-code-1248-every-derived-table-must-have-its-own-alias/) 언급 한 링크의 해상도가 'ORDER BY HD_TICKET_ID'의 t에 따옴표를 추가하는 문제를 해결하지 못하는 것 같습니다. – aggitan

+0

버그 (원인 : SELECT @rowid : = 0 init)가 테이블입니다. , 그것은 이름이 필요합니다, 그래서 나는 rowtable, 당신은 지금 SQL을 시도해 볼 수있는 행운을 빕니다 – BitHigher

관련 문제