MySQL의 마지막 항목에서 두 번째 항목 선택

커스 크 링글

문제 : 지정된 기간 내에 각 개별 티켓의 마지막 항목에서 두 번째가 필요합니다.

예제 데이터 :

ticketTB
ticket createdate          status
111    2015-08-13 04:05:12 good
111    2015-08-13 04:04:12 bad
111    2015-08-13 04:03:12 good
115    2015-08-13 03:05:12 good
115    2015-08-13 03:04:12 bad
115    2015-08-13 03:03:12 good

쿼리 :

SELECT ticket, status, createdate FROM ticketTB GROUP BY ticket ORDER BY createdate DESC LIMIT 1,1;

이 쿼리는 다음을 가져옵니다.

ticket createdate          status
111    2015-08-13 04:04:12 bad

그러나 다른 많은 티켓을 추가하면 모든 개별 티켓을 평가하는 데 필요한 모든 마지막 티켓에서 두 번째 티켓 만 가져옵니다.

내 쿼리가 반환되기를 원합니다.

ticket createdate          status
111    2015-08-13 04:04:12 bad
115    2015-08-13 03:04:12 bad
딸기
DROP TABLE IF EXISTS ticketTB;

CREATE TABLE ticketTB
(ticket INT NOT NULL
,createdate DATETIME NOT NULL
,status VARCHAR(12)
,PRIMARY KEY(ticket,createdate)
);

INSERT INTO ticketTB VALUES
(111    ,'2015-08-13 04:05:12','good'),
(111    ,'2015-08-13 04:04:12','bad'),
(111    ,'2015-08-13 04:03:12','good'),
(111    ,'2015-08-13 04:02:12','good'),
(115    ,'2015-08-13 03:05:12','good'),
(115    ,'2015-08-13 03:04:12','bad'),
(115    ,'2015-08-13 03:03:12','good'),
(115    ,'2015-08-13 03:02:12','good');

SELECT * FROM ticketTB;
+--------+---------------------+--------+
| ticket | createdate          | status |
+--------+---------------------+--------+
|    111 | 2015-08-13 04:02:12 | good   |
|    111 | 2015-08-13 04:03:12 | good   |
|    111 | 2015-08-13 04:04:12 | bad    |
|    111 | 2015-08-13 04:05:12 | good   |
|    115 | 2015-08-13 03:02:12 | good   |
|    115 | 2015-08-13 03:03:12 | good   |
|    115 | 2015-08-13 03:04:12 | bad    |
|    115 | 2015-08-13 03:05:12 | good   |
+--------+---------------------+--------+

SELECT x.* 
  FROM ticketTB x 
  JOIN ticketTB y 
    ON y.ticket = x.ticket 
   AND y.createdate >= x.createdate 
 GROUP 
    BY ticket
     , createdate 
HAVING COUNT(*) = 2;
+--------+---------------------+--------+
| ticket | createdate          | status |
+--------+---------------------+--------+
|    111 | 2015-08-13 04:04:12 | bad    |
|    115 | 2015-08-13 03:04:12 | bad    |
+--------+---------------------+--------+

다음 방법과 같은 것이 일반적으로 더 빠릅니다. 특히 더 큰 데이터 세트에서 그렇습니다.

SELECT ticket
     , createdate
     , status 
  FROM
     ( SELECT *
            , CASE WHEN @prev = ticket THEN @i:=@i+1 ELSE @i:=1 END rank
            , @prev := ticket prev 
         FROM ticketTB
            , (SELECT @prev:='',@i:=1) vars 
        ORDER 
           BY ticket
            , createdate DESC
     ) x 
 WHERE rank = 2;
+--------+---------------------+--------+
| ticket | createdate          | status |
+--------+---------------------+--------+
|    111 | 2015-08-13 04:04:12 | bad    |
|    115 | 2015-08-13 03:04:12 | bad    |
+--------+---------------------+--------+

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

MySQL-두 테이블을 조인 할 때 두 번째 테이블의 마지막 항목 선택

분류에서Dev

첫 번째 드롭 다운 목록에서 이미 선택한 항목의 두 번째 드롭 다운 목록에서 선택하지 마십시오.

분류에서Dev

첫 번째 줄에서 선택한 문자의 마지막 항목 뒤의 모든 항목 제거

분류에서Dev

xpath 쿼리에서 두 번째 마지막 항목을 어떻게 선택할 수 있습니까?

분류에서Dev

목록의 두 번째 마지막 요소를 선택합니다.

분류에서Dev

SQL Server : 항목 그룹에 대해 두 번째 항목부터 마지막 항목까지 선택하는 방법은 무엇입니까?

분류에서Dev

첫 번째 행의 마지막 항목을 가리키고 두 번째 행의 처음 두 항목 이동

분류에서Dev

두 번째와 두 번째 마지막 일치 항목 사이의 모든 항목 제거

분류에서Dev

두 번째와 두 번째 마지막 일치 항목 사이의 모든 항목 제거

분류에서Dev

탐색 창에서 선택한 항목이 두 번째 항목 그룹의 배경색을 표시하지 않음

분류에서Dev

목록 상자에서 무작위로 선택하고 두 번째 목록 상자의 상관 항목

분류에서Dev

MySQL Left Joins : 한 테이블에서 모든 항목을 선택하지만 기준이있는 두 번째 테이블의 값만 일치

분류에서Dev

목록보기에서 선택한 두 번째 항목이 올바른 값을 표시하지 않습니다.

분류에서Dev

목록 상자에서 두 개의 동일한 항목 중 마지막 항목을 선택할 수 없습니다.

분류에서Dev

루프에서 마지막 항목에서 두 번째 항목을 얻는 방법

분류에서Dev

Processing.py가 배열의 마지막 항목에서 두 번째 항목을 건너 뛰는 이유는 무엇입니까?

분류에서Dev

Mysql에서 두 번째 마지막 행을 선택하십시오.

분류에서Dev

첫 번째 항목에 영향을주는 목록보기에서 마지막 항목의 색상 변경

분류에서Dev

목록에서 기준의 마지막 항목과 첫 번째 항목의 차이점

분류에서Dev

첫 번째 열의 선택 항목에 대한 두 번째 열의 확률 찾기

분류에서Dev

첫 번째 열의 선택 항목에 대한 두 번째 열의 평균과 최대 값 찾기

분류에서Dev

Hive의 테이블에서 첫 번째 항목 선택

분류에서Dev

DOM을 사용하여 목록에서 항목의 마지막 요소 선택

분류에서Dev

목록의 첫 번째 항목과 두 번째 항목 비교

분류에서Dev

arraylist의 마지막 항목 만 두 번 추가

분류에서Dev

첫 번째 목록에서 한 항목을 선택하고 두 번째 목록에서 최대 n 개의 항목을 선택하는 모든 조합을 찾는 방법

분류에서Dev

PostgreSql에서 쿼리의 마지막 n 번째 항목을 얻는 방법

분류에서Dev

postgres의 각 사용자에 대해 마지막 항목 선택

분류에서Dev

JavaScript의 배열에서 마지막 두 항목 바꾸기

Related 관련 기사

  1. 1

    MySQL-두 테이블을 조인 할 때 두 번째 테이블의 마지막 항목 선택

  2. 2

    첫 번째 드롭 다운 목록에서 이미 선택한 항목의 두 번째 드롭 다운 목록에서 선택하지 마십시오.

  3. 3

    첫 번째 줄에서 선택한 문자의 마지막 항목 뒤의 모든 항목 제거

  4. 4

    xpath 쿼리에서 두 번째 마지막 항목을 어떻게 선택할 수 있습니까?

  5. 5

    목록의 두 번째 마지막 요소를 선택합니다.

  6. 6

    SQL Server : 항목 그룹에 대해 두 번째 항목부터 마지막 항목까지 선택하는 방법은 무엇입니까?

  7. 7

    첫 번째 행의 마지막 항목을 가리키고 두 번째 행의 처음 두 항목 이동

  8. 8

    두 번째와 두 번째 마지막 일치 항목 사이의 모든 항목 제거

  9. 9

    두 번째와 두 번째 마지막 일치 항목 사이의 모든 항목 제거

  10. 10

    탐색 창에서 선택한 항목이 두 번째 항목 그룹의 배경색을 표시하지 않음

  11. 11

    목록 상자에서 무작위로 선택하고 두 번째 목록 상자의 상관 항목

  12. 12

    MySQL Left Joins : 한 테이블에서 모든 항목을 선택하지만 기준이있는 두 번째 테이블의 값만 일치

  13. 13

    목록보기에서 선택한 두 번째 항목이 올바른 값을 표시하지 않습니다.

  14. 14

    목록 상자에서 두 개의 동일한 항목 중 마지막 항목을 선택할 수 없습니다.

  15. 15

    루프에서 마지막 항목에서 두 번째 항목을 얻는 방법

  16. 16

    Processing.py가 배열의 마지막 항목에서 두 번째 항목을 건너 뛰는 이유는 무엇입니까?

  17. 17

    Mysql에서 두 번째 마지막 행을 선택하십시오.

  18. 18

    첫 번째 항목에 영향을주는 목록보기에서 마지막 항목의 색상 변경

  19. 19

    목록에서 기준의 마지막 항목과 첫 번째 항목의 차이점

  20. 20

    첫 번째 열의 선택 항목에 대한 두 번째 열의 확률 찾기

  21. 21

    첫 번째 열의 선택 항목에 대한 두 번째 열의 평균과 최대 값 찾기

  22. 22

    Hive의 테이블에서 첫 번째 항목 선택

  23. 23

    DOM을 사용하여 목록에서 항목의 마지막 요소 선택

  24. 24

    목록의 첫 번째 항목과 두 번째 항목 비교

  25. 25

    arraylist의 마지막 항목 만 두 번 추가

  26. 26

    첫 번째 목록에서 한 항목을 선택하고 두 번째 목록에서 최대 n 개의 항목을 선택하는 모든 조합을 찾는 방법

  27. 27

    PostgreSql에서 쿼리의 마지막 n 번째 항목을 얻는 방법

  28. 28

    postgres의 각 사용자에 대해 마지막 항목 선택

  29. 29

    JavaScript의 배열에서 마지막 두 항목 바꾸기

뜨겁다태그

보관