2010-12-26 9 views
1

나는이 쿼리를 수행 (1) :쿼리를 수행

나는이 이전 쿼리는 어떤 결과가없는 경우에만 두 번째 (2) 쿼리를 할 필요가
(1)SELECT * FROM t1 WHERE title LIKE 'key%' LIMIT 1 

(2)SELECT * FROM t1 WHERE title LIKE '%key%' LIMIT 1 

기본적으로 내 키에 가장 가까운 제목을 가진 행이 1 행만 있으면됩니다.

Atm 나는 그것과 한계 1 주문 사용자 정의 필드와 UNION 쿼리를 사용하고 있습니다. 문제는 이미 첫 번째 결과를 만든 경우 다른 쿼리를하고 싶지 않아요.

감사

+0

mysql 전체 텍스트 검색을 보면보다 효율적이며 관련 http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html을 통해 주문할 수 있습니다. –

답변

2

라고하는 표준 방법이 없다 '쿼리 Q2 실행이 경우 쿼리 Q1 아무 것도 반환하지 않습니다 경우에만'하나의 SQL 문을.

적당히 가까이 접근 방법은 다음과 같습니다

SELECT * FROM t1 WHERE title LIKE 'key%' LIMIT 1 
UNION 
SELECT * FROM t1 WHERE title LIKE '%key%' 
    AND NOT EXISTS (SELECT * FROM t1 WHERE title LIKE 'key%') 
LIMIT 1 

문제는 최적화 프로그램이 NOT 하위 쿼리를 EXISTS 실현하기에 충분 지능형 지 여부입니다 UNION의 첫 번째 절반이다.

관련 문제