2013-06-01 1 views
1

DB에 제품 데이터가 많이 있습니다. 각 제품에는 어느 Shop에 속해 있는지 알려주는 ShopID가 있습니다. ShopID가 1,4,7 인 모든 제품을 결과의 마지막에 표시하려고합니다. 어떻게하면됩니까?MySQL : 특정 내용이있는 행을 마지막으로 표시

샘플 코드

SELECT * FROM Tablename WHERE Name LIKE %red% ORDER BY ShopID ASC 

최고 감사합니다, D.

쉼표로 구분 된 값으로 저장되지 않습니다 ShopID 경우

답변

0

또 다른 옵션은 ORDER BY 절에 CASE 문을 사용하는 것입니다 :

SELECT * 
FROM Tablename 
WHERE Name LIKE '%red%' 
ORDER BY CASE WHEN ShopID IN (1,4,7) THEN 1 ELSE 0 END, ShopID 
+0

위대한 작품! 고마워요! – ItsMeDom

1

, 당신은 MySQL을의 FIELD()

ORDER BY FIELD(ShopID, 1,4,7) ASC, ShopID ASC 

1,4,7이 결과 목록의 마지막 부분에 나타나는 이유는 FIELD()이 목록에 지정된 인덱스를 반환하기 때문입니다. 이 경우 1,4,7에없는 번호는 0 색인이 첫 번째로 표시됩니다.

0

사용 이 :

ORDER BY (ShopID IN (1, 4, 7)), ShopID 

ShopID IN 표현은 수행 행에 대해, 1 일치하지 않는 행 0을 반환합니다.

관련 문제