2012-03-13 1 views
0

예를 들어, 제목/설명에 "Sprite", "Pepsi"또는 "Coke"의 모든 항목을 검색하고 마지막 3 개의 결과를 출력하고 싶습니다.SQL을 사용하여 여러 항목을 한 번에 검색하는 가장 효율적인 방법은 무엇입니까?

------------------------------------------------ 
| ID | Title     | Description  | 
------------------------------------------------ 
| 1 | text text SPRITE text | text PEPSI xxx | 
| 2 | text text text text | text text text | 
| 3 | text text SPRITE text | text COKE xxxx | 
| 4 | text text text text | text text text | 
| 5 | text PEPSI text text | text COKE xxxx | 
| 6 | text COKE text text | text COKE xxxx | 
| 7 | text text text text | text text text | 
| 8 | text text text text | text text text | 
------------------------------------------------ 

이렇게하는 것이 가장 효율적인 쿼리입니까?

SELECT * 
FROM `table` 
WHERE title LIKE '%Sprite%' OR description LIKE '%Sprite%' 
     OR title LIKE '%Pepsi%' OR description LIKE '%Pepsi%' 
     OR title LIKE '%Coke%' OR description LIKE '%Coke%' 
ORDER BY 'id' DESC 
LIMIT 3; 

또는 일치하지 않는 방법이 있습니까? (나는 방법을 찾을 couldnt한다) ..

예 출력 :

------------------------------------------------ 
| 6 | text COKE text text | text COKE xxxx | 
| 5 | text PEPSI text text | text COKE xxxx | 
| 3 | text text SPRITE text | text COKE xxxx | 
------------------------------------------------ 
+1

가장 좋은 방법은 전체 텍스트 검색 서비스를 사용하는 것입니다. 스핑크스 예를 들면. –

+2

전체 텍스트 색인이있는 경우 MATCH (제목, 설명) AGAINST ('스프라이트') 등으로 할 수 있어야합니다. –

+0

한 번에 여러 검색어와 어떻게 일치합니까? – supercoolville

답변

1
SELECT * 
FROM `table` 
WHERE description regexp ('sprite|pepsi|coke') 
ORDER BY 'id' DESC 
관련 문제