where 에서 in 사용시 정렬이요.. 정보
where 에서 in 사용시 정렬이요..본문
쿼리 where 에서 in 사용할때요..
예를 들어
select * from 테이블 where 컬럼 in(55,11,33) 이런 조건으로 할때요..
값이 오름차수,내림차수가 아닌,
조건절 넣은 순서 그대로( 55,11,33 ) 정렬하고 싶을땐 어떻게 해야할까요?!
도통 감이 안오네요ㅠㅜ;
예를 들어
select * from 테이블 where 컬럼 in(55,11,33) 이런 조건으로 할때요..
값이 오름차수,내림차수가 아닌,
조건절 넣은 순서 그대로( 55,11,33 ) 정렬하고 싶을땐 어떻게 해야할까요?!
도통 감이 안오네요ㅠㅜ;
댓글 전체
record 수가 많지 않다면 case문을 써 보세요.
ordr by case col when 55 then 1 when 11 then 2 when 33 then 3 end ASC
ordr by case col when 55 then 1 when 11 then 2 when 33 then 3 end ASC
in 안의 숫자는 많지 않겠지만 값의 갯수와 숫자는 매번 달라지는 경우거든요..ㅠ
간단히 프로그램 만들어 봤어요.. 배열로 이렇게 하시면 될듯 하기도 한데요
배열 안에 넣는 값들만 따로 프로그래밍 하시면 될듯싶어요
<?
$value_f = array("55","11","33");
$sql = "select * from 테이블 where col in (";
$cnt = count($value_f);
for($i=0;$i<$cnt;$i++){
$sql .= $value_f[$i];
if($i!=($cnt-1)) $sql .= ",";
}
$sql .= ") order by case col ";
for($j=0;$j<$cnt;$j++){
$k = $j+1;
$sql .= "when ".$value_f[$j]." then ".$k." ";
}
$sql .= " end ASC";
echo $sql;
?>
배열 안에 넣는 값들만 따로 프로그래밍 하시면 될듯싶어요
<?
$value_f = array("55","11","33");
$sql = "select * from 테이블 where col in (";
$cnt = count($value_f);
for($i=0;$i<$cnt;$i++){
$sql .= $value_f[$i];
if($i!=($cnt-1)) $sql .= ",";
}
$sql .= ") order by case col ";
for($j=0;$j<$cnt;$j++){
$k = $j+1;
$sql .= "when ".$value_f[$j]." then ".$k." ";
}
$sql .= " end ASC";
echo $sql;
?>
이렇게도 가능하군요^^
잘 적용됩니다.
감사합니다.
잘 적용됩니다.
감사합니다.