SQL group by order by
본문
제목별 wr_3(0~100)의 작업률 필드의 최대값해서 group by로 뽑으려고 했는데 잘 안되네요;;;
wr_subject | wr_3 | wr_datetime 의 컬럼중에 실제 wr_subject를 group by, wr_3를 order by로 했는데
wr_3값이 가장 낮은 값으로 SELECT 되어 뿌려지네요;;
wr_subject | wr_3 | wr_datetime
> 작업1 | 10 | 2014-03-19 11:11:22
> 작업1 | 20 | 2014-03-19 11:22:22
> 작업1 | 30 | 2014-03-19 11:33:33
아래는 제가 사용한 쿼리문 인데, 결국 두번 select 해야하는지...
SELECT * FROM `TABLE`
WHERE wr_is_comment = '1' and wr_parent = '".$wr_idx."' and wr_comment = '".$wr_idz."' and wr_comment_reply <> ''
GROUP BY wr_subject HAVING wr_3=max(wr_3)
ORDER BY wr_datetime DESC";
조언 부탁드려 봅니다.
답변 4
wr_3에 최대값을 뽑으려면
max(wr_3) 이용하시면 되요
그런데 문자로 group by는 좋은 방법은 아니에요
키값이라면 모르겠지만요
max(wr_3) 이용하시면 되요
그런데 문자로 group by는 좋은 방법은 아니에요
키값이라면 모르겠지만요
select wr_subject, max(wr_3) from temptable group by wr_subject
이 쿼리를 원하시는 것인가요?
이 쿼리를 원하시는 것인가요?
wr_subject | wr_3 | wr_datetime
> 작업1 | 10 | 2014-03-19 11:11:22
> 작업1 | 20 | 2014-03-19 11:22:22
> 작업1 | 30 | 2014-03-19 11:33:33
> 작업2 | 10 | 2014-03-17 11:33:33
> 작업2 | 15 | 2014-03-18 11:33:33
> 작업2 | 50 | 2014-03-20 11:33:33
실제 select * temptable .... group by wr_subject / order by wr_3 desc
후 for문으로 돌려서 나오는 목록이
> 작업 1 | 30 | 2014-03-19 11:33:33
> 작업 2 | 50 | 2014-03-20 11:33:33
이렇게 나와야 하지만 저의 경우는
> 작업1 | 10 | 2014-03-19 11:11:22
> 작업2 | 10 | 2014-03-17 11:33:33
이렇게 나옵니다;;
max를 넣어야 해요
답변을 작성하시기 전에 로그인 해주세요.