2010-04-21 1 views
1

나는 여러 매개 변수로 데이터베이스를 검색하기 위해 SQL을 작성 중이다. where 절의 대부분의 매개 변수와 일치하는 항목으로 결과 세트를 정렬하려면 어떻게해야합니까? 예를 들어 :SQL 문의 where 절에 일치하는 매개 변수의 수로 테이블을 정렬하는 방법은 무엇입니까?

2, 3, 1

감사 :

SELECT * 
FROM users 
WHERE username = 'eitan' 
OR email = '[email protected]' 
OR company = 'eitan' 


Username | email    | company 

1) eitan |  [email protected]  |  blah 

2) eitan |  [email protected] | eitan 

3) eitan | [email protected] |  blah 

은 같이 주문해야합니다. (PS 쿼리는, 그 쉬운 일이 아닙니다 조인을 많이하고 WHERE에서 OR의 많은있다)

에이 탄을

+0

어떤 데이터베이스 ?? –

답변

5

MySQL의 경우 :

SELECT * FROM users 
ORDER BY 
    (username = 'eitan') 
    + (email = '[email protected]') 
    + (company = 'eitan') 
    DESC 

PostgreSQL의 경우 :

SELECT * FROM users 
ORDER BY 
    (username = 'eitan')::int 
    + (email = '[email protected]')::int 
    + (company = 'eitan')::int 
    DESC 

SQL 서버의 경우 :

SELECT * FROM users 
ORDER BY 
    case when username = 'eitan' then 1 else 0 end 
    + case when email = '[email protected]' then 1 else 0 end 
    + case when company = 'eitan' then 1 else 0 end 
    DESC 
+0

당신이 그 일을 할 수 있는지 전혀 몰랐습니다. 음, 오늘 배운 다른 것. –

+0

나는 OP가 아직도'WHERE username = 'eitan'OR 이메일 = '[email protected]'또는 OR company = 'eitan'' 조항을 가지고 있다고 생각한다. –

+0

그래, 나도 알아, 그는 단지 WHERE 절을 추가해야합니다. afaik, 아직 WHERE 절의 진실성을 평가할 수있는 구조는 없습니다. –