programing

MySQL ORDER BY IN()

projobs 2022. 10. 2. 15:15
반응형

MySQL ORDER BY IN()

저는 ID가 여러 개 있는 PHP 어레이를 가지고 있습니다.이 번호들은 이미 주문되어 있습니다.

이제 IN() 메서드로 모든 ID를 취득하고 싶습니다.

단, 이러한 ID는 IN 메서드와 같이 오더해야 합니다.

예를 들어 다음과 같습니다.

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

다음과 같은 결과를 얻을 수 있습니다.

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

좋은 의견이라도 있나?이거 하는 기능이 있는 거 아니에요?

감사합니다!

FILD 함수를 찾으시는 것 같습니다.일반적으로 문자열 함수라고 생각되지만 숫자도 문제없이 동작합니다.

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

다음을 사용할 수 있습니다.

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

반응형