1

我有一个超过 300 行的数据库。

由于各种原因,我只想一次搜索 21 行的特定术语和不同的起始索引点。

我在名为 的列中查询“禁止的广告” search_terms

当我使用下面的查询时,它会搜索所有 300 行“禁止广告”,而不是仅搜索 21 行。

SELECT `rating_score`
FROM archived_videos
WHERE search_terms='banned commercials'
ORDER BY `rating_score` DESC
LIMIT 0,21
4

3 回答 3

1

尝试使用这个

SELECT rating_score FROM archived_videos WHERE search_terms='banned commercials' ORDER BY rating_score DESC LIMIT 21

将其限制为指定 21 会将结果限制为前 21

于 2013-01-06T02:56:00.033 回答
1

如果要搜索排名前 21 的评级行,可以使用子选择来执行此操作

SELECT t.`rating_score`
from (select *
      FROM archived_videos
      ORDER BY `rating_score` DESC
      LIMIT 0,21) t
WHERE t.search_terms='banned commercials'
于 2013-01-06T03:03:48.543 回答
0

我从您的问题中得知您要搜索 21 行的块,而不是将结果集限制为 21 行。LIMIT 子句限制结果,而不是正在搜索的记录集。要限制记录,您需要在 where 子句中添加一些内容。这是什么取决于您的表格的内容。如果您有一个从 1 到 300 对行进行编号的序列列,您可以说“其中序列>= 1 和序列 < 21”,并根据需要调整数字。

另一种方法是添加一个 select 子句:

select iif (search_terms="banned", 1, 0) as flag
into temp_table
from archived_videos
limit 21

select * from temp_table where flag = 1

您可以使用子选择将这两个选择组合为一个。

于 2013-01-06T03:26:26.417 回答