두 테이블이 있습니다.두 테이블에서 mysql 역 텍스트 검색
먼저 사용 된 단어 목록을 포함하고, 두 번째는 항상 표시 할 수없는 단어의 검은 목록을 유지합니다.
첫 번째 테이블 (A) 예를
+---------------+
| keyword |
+---------------+
| php |
| php developer |
| developer |
| c# |
+---------------+
두 번째 테이블 (B) 예 : 나는 완전히 또는 부분적으로 두 번째 테이블에서 단어를 포함하는 행을 제외한 1 테이블에서 모든 것을 보여 주어야
+-----------+
| word |
+-----------+
| developer |
| foo |
| music |
+-----------+
. 위의 내용을 기반으로 예를 들어, 나는 두 행만 표시해야합니다 php와 C#. (이 하나가 될 것입니다 경우 아주 좋은) 내가 도움 SQL과 같은 결과에 도달 할 수있는 방법
나는 단지이
select * from A where keyword not in(select word from B);
을 할 수 있지만 엄격한을 비교 한입니다. 그것은 나에게 충분하지 않다.
어떤 조언을 환영합니다. 감사합니다. .
select keyword from A where keyword not in
(select A.keyword from A
inner join B on A.keyword like '%' + B.keyword + '%')
당신은 모든 단어를 선택 B의 단어를 포함하고 다른 단어를 선택 afterwords 그 A :
대신 % + 키워드 + %가 사용될 수 CONCAT() 함수 를 보인다 예들이 잘 작동하는 의견에 감사드립니다 – user1016265
네, 그것은 또한이 솔루션은 최적이 아닌 느린 것 방법 : –
주를 작동 큰 데이터 세트를 사용해야합니다. 일치하지 않는 테이블로 테이블 A를 제한하는 것보다 테이블 A를 두 번 쿼리합니다. 'A'테이블을 두 번 쿼리하지 않는 솔루션에 대한 내 대답을 참조하십시오. – Seph