Program Tip

MySQL ORDER BY IN ()

programtip 2020. 11. 23. 19:54
반응형

MySQL ORDER BY IN ()


ID 번호가있는 PHP 배열이 있습니다. 이 번호는 이미 주문되어 있습니다.

이제 모든 ID를 얻기 위해 IN () 메서드를 통해 결과를 얻고 싶습니다.

그러나 이러한 ID는 IN 방식과 같이 주문해야합니다.

예를 들면 :

IN(4,7,3,8,9)  

다음과 같은 결과를 제공해야합니다.

4 - Article 4  
7 - Article 7  
3 - Article 3  
8 - Article 8  
9 - Article 9

어떤 제안? 이 작업을 수행하는 기능이 있습니까?

감사!


나는 당신이 FIELD 함수를 찾고 있다고 생각합니다. 일반적으로 문자열 함수로 생각되지만 숫자에서도 잘 작동합니다!

ORDER BY FIELD(field_name, 3,2,5,7,8,1)

다음을 사용할 수 있습니다 FIELD().

ORDER BY FIELD(id, 3,2,5,7,8,1)

str1, str2, str3, ... 목록에서 str의 인덱스 (위치)를 반환합니다. str이 없으면 0을 반환합니다.

그러나 그것은 추악한 해킹이므로 다른 선택의 여지가 없을 때만 실제로 사용하십시오. 앱에서 출력을 정렬하는 것이 더 좋을 수 있습니다.


표준 SQL은이를 수행 할 수있는 방법을 제공하지 않습니다 (MySQL은 가능하지만 언제든지 DBMS를 전환 할 수 있도록 공급 업체 중립적 인 솔루션을 선호합니다).

이는 결과 집합이 반환 된 사후 처리에서 수행해야하는 작업입니다 . SQL은 "order by"절에 지정된 순서 (또는 그러한 절이없는 경우 임의의 순서) 로만 반환 할 수 있습니다 .

다른 가능성은 (좋지 않지만, 선택권을 드리게되어 영광입니다) 각 ID에 대해 하나씩 데이터베이스를 여러 번 방문하고 들어오는대로 처리하는 것입니다.

select * from tbl where article_id = 4;
// Process those.
select * from tbl where article_id = 7;
// Process those.
: : : : :
select * from tbl where article_id = 9;
// Process those.

진술에 따라 정확한 주문을 제공하면됩니다.

SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID

귀하의 예제에서와 같이 데이터를 순서대로 정렬하려는 이유는 무엇입니까?

긴 쿼리를 연결해도 괜찮다면 다음과 같이 시도하십시오.

SELECT ID FROM myTable WHERE ID=1
UNION
SELECT ID FROM myTable WHERE ID=3
UNION
SELECT ID FROM myTable WHERE ID=2

참고 URL : https://stackoverflow.com/questions/1332434/mysql-order-by-in

반응형