Mysql查询-仅搜索最新的x行
这是我在这里的第一个问题,所以我希望我做得对。我有以下SQL查询: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您需要一个嵌
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吗?