내가 SQL 테이블에 일부 항목의 판매 데이터를 포함하고있는 첫 번째 또는 마지막 행을 선택합니다. 사실, 상품 판매 기록이 있습니다.MySQL은 : 여러 열을 기준으로 그룹화 할 때
예를 들어 키보드 (id:1
)와 마우스 (id:2
)의 두 항목이 포함 된 판매가 있습니다. 구매자는 eBay처럼 각 항목과 여러 번 입찰을 할 수 있습니다. 따라서 2 명의 구매자 (ids are 97 and 98
)가 입찰을 몇 번했다고 가정 해 봅시다. 관련 데이터는 다음과 같습니다.
bid_id | buyer_id | item_id | amount | time |
1 | 97 | 1 | 44.26 | 2014-01-20 15:53:16 |
2 | 98 | 2 | 30.47 | 2014-01-20 15:54:52 |
3 | 97 | 2 | 40.05 | 2014-01-20 15:57:47 |
4 | 97 | 1 | 42.46 | 2014-01-20 15:58:36 |
5 | 97 | 1 | 39.99 | 2014-01-20 16:01:13 |
6 | 97 | 2 | 24.68 | 2014-01-20 16:05:35 |
7 | 98 | 2 | 28 | 2014-01-20 16:08:42 |
8 | 98 | 2 | 26.75 | 2014-01-20 16:13:23 |
이 표에서 각 사용자에 대한 첫 번째 항목 제공 정보 및 각 사용자에 대한 마지막 제공 정보에 대한 데이터를 선택해야합니다.
bid_id | buyer_id | item_id | amount | time |
5 | 97 | 1 | 39.99 | 2014-01-20 16:01:13 |
6 | 97 | 2 | 24.68 | 2014-01-20 16:05:35 |
8 | 98 | 2 | 26.75 | 2014-01-20 16:13:23 |
: I는 각 사용자에 대한 마지막 제안을 선택하면
bid_id | buyer_id | item_id | amount | time |
1 | 97 | 1 | 44.26 | 2014-01-20 15:53:16 |
2 | 98 | 2 | 30.47 | 2014-01-20 15:54:52 |
3 | 97 | 2 | 40.05 | 2014-01-20 15:57:47 |
는, 반환 같이해야한다 : 내가 선택하는 경우
그래서 첫 번째 항목은 같은 데이터가 있어야한다 반환 (별개의) 각 사용자에 대한 제공 나는 각 사용자에 대해 각 항목을 가지고 가지고 있기 때문에
, 나는 다음 buyer_id
및 item_id
모두 GROUP BY
에 노력 SELECT
time
또는 bid_id
의 MIN
값. 그러나 그것은 항상 나를 먼저 돌아 bid_id
하지만 (실제로 마지막 이벤트입니다) 최신 amount
행.
여기에 내가 시도 쿼리의 :
SELECT MIN(`bid_id`) AS `bid_id`,`buyer_id`,`item_id`,`amount`,`time` FROM `offers` GROUP BY `buyer_id`,`item_id`
는 그리고 결과였다
bid_id | buyer_id | item_id | amount | time |
1 | 97 | 1 | 39.99 | 2014-01-20 16:01:13 |
2 | 97 | 2 | 24.68 | 2014-01-20 16:05:35 |
3 | 98 | 2 | 26.75 | 2014-01-20 16:13:23 |
당신이 볼 수 있듯이, 그것은 그룹에 의해 그리고 ID는 정확하지만 행 값의 나머지는 아니.
어떻게 제대로 그룹화 SELECT
첫번째 및/또는 마지막 행은 여러 열을 구입할 수 있습니까?