여기 내 쿼리 :IN을 사용하고 주문 하시겠습니까?
SELECT * FROM article WHERE id IN (300, 400, 100)
그러나 그것은 항상 ID로, 같은 기사를 주문한다.
그래서 위 밖으로 얻을 것 :
id
100
300
400
그들이 IN 문에서 요청 된 순서에 밖으로 결과를 얻을 수있는 방법이 있나요? 예.
id
300
400
100
여기 내 쿼리 :IN을 사용하고 주문 하시겠습니까?
SELECT * FROM article WHERE id IN (300, 400, 100)
그러나 그것은 항상 ID로, 같은 기사를 주문한다.
그래서 위 밖으로 얻을 것 :
id
100
300
400
그들이 IN 문에서 요청 된 순서에 밖으로 결과를 얻을 수있는 방법이 있나요? 예.
id
300
400
100
다음과 같이 시도해 볼 수 있습니다. FIELD() 기능을 사용하십시오.
SELECT * FROM article
WHERE id IN (300, 400, 100)
ORDER BY FIELD(id, 300, 400, 100);
당신과 같이 임시 테이블에 원하는 값을 드롭 수 : 다음
CREATE TABLE TempT (sortOrder int,
id int);
INSERT INTO TempT (sortOrder, id) VALUES
(1, 300),(2, 400),(3, 100);
그리고 그냥과 같이 테이블에 조인
SELECT a.*
FROM article a
INNER JOIN TempT t ON a.id = t.id
ORDER BY t.sortOrder;
SQL Fiddle 예. 이는 IN
문에 통합해야하는 많은 가치가있는 경우에 효과적입니다.
'ORDER BY' 절을 제공하지 않으면 SQL select에서 result * sets *는 정의에 의해 정렬되지 않음 – knittl
중복 됨 : http://stackoverflow.com/questions/396748/ordering-by-the-order-of- sql-in-clause? rq = 1 – Matt