2013-04-20 2 views
1

: advace에서주문 결과 전체 텍스트

#1054 - Unknown column 'rank' in 'order clause' 

감사 :

SELECT data1 
FROM table1 t1 
WHERE EXISTS (
SELECT id, 
MATCH (
... 
) 
AGAINST (
... 
) AS rank 
FROM table2 t2 
WHERE MATCH (
... 
) 
AGAINST (
.... 
) 
) ORDER BY rank DESC 

문제는 내가 다음과 같은 메시지가 표시 사실, 어디 밖에 순위를 인식하지 않는다는 것입니다!

답변

0

에 가입, 당신은 단지 주 from 절에 테이블/하위 쿼리의 열을 참조 할 수 있습니다. 하위 쿼리는 where 절에 있습니다.

join으로 다시 작성해야합니다.

select data1 
from table1 t1 join 
    (SELECT id, MATCH (...) AGAINST (...) AS rank 
     FROM table2 t2 
     WHERE MATCH (...) AGAINST (....) 
    ) t2 
    on t1.id = t2.id 
order by t2.rank 

그렇지 않으면, 당신은 계정에 중복을해야합니다 :

select distinct data1, rank 
from table1 t1 join 
    (SELECT id, MATCH (...) AGAINST (...) AS rank 
     FROM table2 t2 
     WHERE MATCH (...) AGAINST (....) 
    ) t2 
    on t1.id = t2.id 
order by t2.rank 
+0

예제가 실제로 잘 수행되었으므로 최고의 답을 얻을 자격이 있습니다! 고마워! – user2302554

+0

tbh, 여기서 하위 쿼리에 대한 요구 사항이 표시되지 않습니다. 내가 놓친 게 있니? – Hazzit

0

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 
+0

당신은 나에게 예를하십시오 줄 수 id 경우이이 작동합니다, 표 2에서 유일한? – user2302554

+0

정말 고마워요! – user2302554

관련 문제