order by position을 사용하면, wr_id 1 이 11 위에 올라와버려요.
본문
안녕하세요. :)
최근게시물에서 wr_id 값을 지정하여 호출하고 있는데요.
$sql = " select * from $tmp_write_table where wr_id IN($wid) and wr_is_comment = 0 order by position(wr_id in '$wid'), $rows ";
$wid 는 배열된 wr_id 값이에요. "11,39,1,23,56" 이런식으로요.
position은 $wid의 배열순서 그대로 호출하려고 사용하였습니다.
문제는 wr_id 가 1 일때에요.
11,39,1,23,56 순서대로 호출되어야 하는데, 1만 나오면
1,11,39,23,56 이렇게 되어버려요.
position 을 사용하면, 1 이 11 위에 올라오던가. 2 가 21 위에 올라와버리던가. 10 이 100 위에 올라와버려요. ;;
해결할 방법이 없을까요?
도움 부탁 드려요.
답변 2
예)
select idx from test_table where idx in ('29','11','1','21','100','18')
order by FIELD(idx ,'29','11','1','21','100','18')
order by FIELD 로 한번 해보시는게....
또는 CASE문으로 하셔도 되겠네요
select * $tmp_write_table where wr_is_comment = 0 order by (CASE
WHEN wr_id ="11" then 1
WHEN wr_id ="39" then 2
WHEN wr_id ="1" then 3
WHEN wr_id ="23" then 4
WHEN wr_id ="56" then 5
ELSE 99 END ) LIMIT 0 , 5;
결과값 11 / 39 / 1 / 23 / 56
WHEN wr_id ="11" then 1
WHEN wr_id ="39" then 2
WHEN wr_id ="1" then 3
WHEN wr_id ="23" then 4
WHEN wr_id ="56" then 5
ELSE 99 END ) LIMIT 0 , 5;
결과값 11 / 39 / 1 / 23 / 56
답변을 작성하시기 전에 로그인 해주세요.