문제

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

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

감사!

도움이 되었습니까?

해결책

나는 당신이 기능을 찾고 있다고 생각합니다 필드 - 일반적으로 문자열 함수로 생각하지만 숫자에 대해서도 잘 작동합니다!

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 5 월, 저는 공급 업체 중립 솔루션을 선호하므로 언제든지 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top