Mysql查询-仅搜索最新的x行

Mysql查询-仅搜索最新的x行,mysql,Mysql,这是我在这里的第一个问题,所以我希望我做得对。我有以下SQL查询: SELECT *, MATCH(name, descr) AGAINST ('$q') AS score FROM songs WHERE MATCH (name, descr) AGAINST('$q') ORDER BY score DESC 您可能知道,如果描述或名称中存在匹配项,则此查询将从songs表的每一行中选择所有内容。例如,我想做的是将查询限制为仅搜索最近的10k行。我还有一个主键,id您需要一个嵌

这是我在这里的第一个问题,所以我希望我做得对。我有以下SQL查询:

SELECT *, 
  MATCH(name, descr) AGAINST ('$q') AS score 
FROM songs 
WHERE MATCH (name, descr) AGAINST('$q') 
ORDER BY score DESC

您可能知道,如果描述或名称中存在匹配项,则此查询将从
songs
表的每一行中选择所有内容。例如,我想做的是将查询限制为仅搜索最近的10k行。我还有一个主键,
id

您需要一个嵌套查询。试试这个:

SELECT temp.*, 
  MATCH(name, descr) AGAINST ('$q') AS score
FROM (
    SELECT *
    FROM songs 
    ORDER BY id DESC
    LIMIT 10000
    ) temp
WHERE MATCH (name, descr) AGAINST('$q') 
ORDER BY score DESC

您可以
按分数ASC排序(而不是
DESC
),并添加
限制10000
,最后颠倒结果的顺序:

SELECT * FROM (
  SELECT *, 
    MATCH(name, descr) AGAINST ('$q') AS score 
  FROM songs 
  WHERE MATCH (name, descr) AGAINST('$q') 
  ORDER BY score ASC
  LIMIT 10000
) ORDER BY score DESC

可以肯定的是,你的意思是搜索,而不是返回最后10k行,对吗?你是否尝试过在
按分数排序描述后添加
限制10000
?可能重复:这正是我想要的,非常感谢。现在我得到了这个错误:“使用的表类型不支持全文索引”,尽管表引擎是MYISAM。有什么想法吗?嗯,你确定那张桌子也是MyISAM吗?