테스트 사이트 - 개발 중인 베타 버전입니다

order by position을 사용하면, wr_id 1 이 11 위에 올라와버려요. 채택완료

공대그녀 11년 전 조회 4,328

안녕하세요. :)

최근게시물에서 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개

채택된 답변
+20 포인트
z
11년 전

예)

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문으로 하셔도 되겠네요


로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

공대그녀
11년 전
zzzmin 님 답변 감사드려요.:)
order by FIELD (wr_id,'$wid') , $rows ";
이렇게 적용하였는데요. 배열이 순서대로 나오질 않아요;
어떻게 해결 할 방법이 없을까요?
공대그녀
11년 전
order by FIELD (wr_id,$wid) , $rows "; 으로 해결하였습니다.
''를 빼야 되더라구요. zzzmin님 감사 드립니다.ㅎ

댓글을 작성하려면 로그인이 필요합니다.

11년 전
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
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

공대그녀
11년 전
커피는막심님 답변 감사드립니다. :) ㅎ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인