현재 497k 단어가있는 테이블이 있습니다. 각 단어와 영어의 상대 빈도는 한 행입니다. 나는 그들의 빈도에 따라 1에서 497k (이 목록에 나오는 단어의 수)를 주문할 다른 열을 만들고 싶습니다. 가장 높은 빈도는 1 등입니다. 어떻게해야합니까? 이 더 optimzed 할 수 있습니다 내가 확신다른 열 값의 순서에 따라 테이블의 모든 행 번호를 지정하십시오.
update vocabulary SET rank =
(
SELECT ranking.rank FROM (
SELECT @rownum:[email protected] + 1 as rank, voca.word
FROM
(
SELECT v.word, v.frequency
FROM vocabulary v
ORDER BY v.frequency DESC
) voca,
(SELECT @rownum := 0) r
) ranking
WHERE ranking.word = vocabulary.word
);
하지만 그것은 좋은 시작이 될 수 있습니다 나는 MySQL은 5.1.54
쿼리를 쓰기 시작할 수 있습니다, 우리는 당신이'ORDER를 배치 할 수 있습니다 이것의 목적은 무엇 당신이 그것을 해결하는 데 도움과 – Ibu
그것을 개선 BY' 귀하의 검색 진술 내에서? –
-1 간단한 카운트 (B) 다음에 의해 오더. –