2017-05-09 11 views
0

WHERE IN 문으로 쿼리를 실행할 때 반환되는 product_id가 자동으로 정렬되는 것 같습니다.SQL에서 "WHERE IN"이 자동으로 정렬 된 결과를 반환합니다.

$SQL = "SELECT * FROM PIM WHERE product_id in (10,8,1,3)"; 

foreach($conn->query($sql) as $row) { 
    echo $row['product_id'] . "<br>"; 
} 

결과 :

1 
3 
8 
10 

나는 그들이 당신이 지정하지 않은 그들이 당신의 원래 쿼리에 있기 때문에 (10,8,1,3)

+5

그것은 우연히 그 순서로 반환 할 수 있습니다; (ORDER BY FIELD (product_id, 10, 8, 1, 3)') –

+3

SQL 결과를 특정 순서로 원한다면 다음을 추가해야합니다. 특정 ORDER BY 절 –

+0

[* "메일 링리스트의 일반적인 질문은 특정 순서로 결과를 정렬하는 방법입니다. FIELD 함수를 사용하십시오 :"* "(https://dev.mysql.com/doc/ refman/5.7/ko/sorting-rows.html) –

답변

3

에 입력 된 순서로 반환 할 순서 MySQL은 ASC를 사용 후 사용해야 같이 FIELD()에 의해 ORDER를 사용해보십시오 :

SELECT * FROM PIM WHERE product_id in (10,8,1,3) ORDER BY FIELD(product_id, 10,8,1,3); 

확인이 great answer for more details.

+0

고마워, 그게 효과가있어 :-) –

2

시도 :

select * from PIM where id in (1,3,8,10) order by find_in_set(id,'10,8,1,3');