2010-03-23 6 views
2

의 발생의 수에 의하여 고유 행하지만 순서를 내가 가지고있는 다음 쿼리 :연합 MySQL의

SELECT o.id,o.name FROM object o 
WHERE 
    (
     o.description LIKE '%Black%' OR 
     o.name LIKE '%Black%' 
    ) 
UNION ALL 
SELECT o2.id,o2.name FROM object o2 
WHERE 
    (
     o2.description LIKE '%iPhone%' OR 
     o2.name LIKE '%iPhone%' 
    ) 
다음 procude

:

id name 
2 New Black iPhone 
1 New White iPhone 
2 New Black iPhone 
내가 DISTINCT UNION 싶습니다

,하지만 난 것 또한 각 동일한 행 (primary : id)의 발생 횟수에 따라 정렬 된 결과와 유사합니다.

답변

5

결과를 ID 및 이름 열에 그룹화하고 각 고유 값의 발생 횟수를 확인할 수 있습니다. 다음이 나타나는 대부분의 발행 수에 의해 그들을 주문할 수 있습니다 먼저이 반환됩니다 order by count(*) desc

select id, name, count(*) as occurences 
from (
    SELECT o.id,o.name FROM object o 
    WHERE 
     (
      o.description LIKE '%Black%' OR 
      o.name LIKE '%Black%' 
     ) 
    UNION ALL 
    SELECT o2.id,o2.name FROM object o2 
    WHERE 
     (
      o2.description LIKE '%iPhone%' OR 
      o2.name LIKE '%iPhone%' 
     ) 
) 
group by id, name 
order by count(*) desc 

id name    occurences 
2 New Black iPhone 2 
1 New White iPhone 1