Mysql LIMIT使用MATCH AGAINST

时间:2013-10-14 20:21:55

标签: mysql sql database limit match

我有这个SQL查询。如果我在没有LIMIT的情况下运行此查询,匹配的结果就可以了,但是当我使用限制运行时(进行无限滚动),我无法获得最佳匹配,只是我获得LIMIT搜索的最佳匹配,而不是10中分开的整个搜索中的第一个:

    SELECT videos.id_video as idVideo, 1 as idCanal, MATCH (nombre_prog, programas.descrip_larga) AGAINST ('escuela') as relevancia FROM videos
INNER JOIN programas_videos ON videos.id_video = programas_videos.id_video
INNER JOIN programas ON programas_videos.id_prog = programas.id_prog
WHERE MATCH (nombre_prog, programas.descrip_larga) AGAINST ('escuela' IN BOOLEAN MODE)
ORDER BY relevancia DESC LIMIT 5,5

我该如何纠正?

谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个。它将首先返回子选择的所有结果,然后应用限制。

SELECT  *

FROM 

(
SELECT videos.id_video as idVideo, 1 as idCanal, MATCH (nombre_prog, programas.descrip_larga) AGAINST ('escuela') as relevancia FROM videos
INNER JOIN programas_videos ON videos.id_video = programas_videos.id_video
INNER JOIN programas ON programas_videos.id_prog = programas.id_prog
WHERE MATCH (nombre_prog, programas.descrip_larga) AGAINST ('escuela' IN BOOLEAN MODE)
ORDER BY relevancia DESC 
) AS x

LIMIT 5,5