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
'Program Tip' 카테고리의 다른 글
루비 메서드에 여러 인수를 배열로 전달하는 방법은 무엇입니까? (0) | 2020.11.23 |
---|---|
VB.NET에서 문자열을 Enum 값으로 구문 분석 (0) | 2020.11.23 |
VB.Net 속성-Public Get, Private Set (0) | 2020.11.23 |
유니 코드 문자의 코드를 어떻게 얻을 수 있습니까? (0) | 2020.11.23 |
PostgreSQL이 개발 시스템에 설치되지 않은 경우 psycopg2를 virtualenv에 설치 (0) | 2020.11.23 |