WHERE EXISTS
및 부속 조회를 사용 중입니다.
SELECT data1 FROM table1 t1 WHERE EXISTS (
SELECT id,
MATCH (...) AGAINST (...) AS rank
FROM table2 t2
WHERE MATCH (...) AGAINST (...)
) ORDER BY rank DESC
이 문맥에서 MySQL ignores은 선택된 필드를 의미합니다. 그것은 읽을 수 있습니다 :
SELECT data1 FROM table1 t1 WHERE EXISTS (
SELECT 42
FROM table2 t2
WHERE MATCH (...) AGAINST (...)
) ORDER BY rank DESC
그리고 똑같이 작동합니다.
WHERE EXISTS
-subquery가 부울을 반환하고 부울을 반환한다고 생각하십시오.
순위를 table2에서 계산하려면 기본 쿼리에 JOIN
을 추가해야합니다 (가능하면 GROUP BY
절).
편집 : 예
대부분의 아마 당신은 WHERE EXISTS
절을 필요로하지 않습니다. 표 2 일 일치하는 행만을 최대가있는 경우
SELECT t1.data1, MATCH (...) AGAINST (...) AS rank
FROM table1 t1
JOIN table2 t2 ON (MATCH (...) AGAINST (...))
GROUP BY t1.id, t1.data, rank
ORDER BY rank DESC
(귀하의 질문은 그래서 여기에 표준 경우의 결정이 너무 불특정입니다), 당신은 멀리 GROUP BY
절없이 얻을, 단지 작업을 수행 할 수 있습니다 직선 SQL 문에서
SELECT t1.data1, MATCH (...) AGAINST (...) AS rank
FROM table1 t1
JOIN table2 t2 ON (MATCH (...) AGAINST (...))
ORDER BY rank DESC
예제가 실제로 잘 수행되었으므로 최고의 답을 얻을 자격이 있습니다! 고마워! – user2302554
tbh, 여기서 하위 쿼리에 대한 요구 사항이 표시되지 않습니다. 내가 놓친 게 있니? – Hazzit