2011-07-29 2 views
1

이 작업을 수행하는 방법을 모르지만 사용자 ID가 5 인 항목이 포함 된 표가 있다고 말하면 해당 사용자의 특정 항목을 검색하면 모든 항목이 표시되고, 검색 한 항목이 먼저 표시되고 나머지 항목이 표시됩니다. 예를 들어 :SQL, 어디 id = 5,하지만 특정 레코드를 먼저 표시해야합니다.

Items table 
----------- 
itemID  userID itemName 
1    5  Coffee Mug 
2    5  iPhone 
3    5  LCD Monitor 
4    5  Macbook pro 
5    5  Shell 

그래서 내가 아이폰에 대한 검색을 할 말을, 난 내 결과 (아이디 = 5),하지만 ... 내가 아이폰 항목이에있을하려는 사용자 ID의 모든 항목을 반환하려면 목록 맨 위로! 도와 주셔서 감사합니다.

데미안

+0

사용자 또는 항목을 검색하고 있습니까? 아니면 일종의 종류일까요? Aaron의 ORDER BY는 검색 항목을 먼저 만들지 만 "iphone"과 userid = 5를 검색하면 한 행만 표시됩니다. – gbn

+0

사실 itemID로 검색하고 싶습니다. 그래서 나는 itemID = 2 문자열을 전달합니다. 먼저 itemID 2를보고 싶습니다. 나머지는 다음과 같습니다. – Damien

답변

2
ORDER BY  
    case when Items.itemID = 2 then 0 else 1 end ASC  
    ,Items.itemName ASC 
+0

나는이 해결책을 좋아한다. 필요한 경우 나머지 항목을 정렬하는 방법을 보여준다. 그럴 것 같아요. –

+0

좋은 .... 당신은 나에게 그것을 설명 할 수 ... 전에 그것을 본 적이. – Damien

+0

@Damien :'CASE'는 매우 강력하고 융통성이 있으며 스스로 살펴보아야합니다. http://msdn.microsoft.com/en-us/library/ms181765.aspx 및 http://www.extremeexperts.com/sql/ articles/CASEINORDER.aspx 및 http://www.sqlteam.com/article/dynamic-order-by –

3

이제 우리는 더 이상 '아이폰'에 대한 검색 EDIT 우리는 @ItemID에 의해 첫 번째 항목을 표시됩니다

ORDER BY 
    CASE WHEN itemID = @ItemID THEN 'a' ELSE 'z' END 
    --, secondary ordering 
+0

사실 itemID로 검색하고 싶습니다. 그래서 나는 itemID = 2 문자열을 전달합니다. 먼저 itemID 2를보고 싶습니다. 나머지는 다음과 같습니다. – Damien

+0

@ItemID를 사용하기위한 답변이 업데이트되었습니다 (데이터 유형이 itemID 열과 일치 함 - 실제로는 문자열이 아니어야 함). –

+0

도움을 주셔서 감사합니다! – Damien

0

은 case 문으로 SELECT에 대한 추가 열을 만드는 것이 귀하의 조건이 만족되면 0이고, 그렇지 않으면 ORDER BY입니다.

+2

실제로 열을 구체화 할 필요는 없습니다. –

관련 문제