1

300 行を少し超えるデータベースがあります。

さまざまな理由から、特定の用語と異なる開始インデックス ポイントで一度に 21 行のみを検索したいと考えています。

という列で「禁止されたコマーシャル」を照会していますsearch_terms

以下のクエリを使用すると、21 行だけではなく、300 行すべての「禁止されたコマーシャル」が検索されます。

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 までの行に番号を付けたシーケンス列がある場合、「where sequence>= 1 and sequence < 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

副選択を使用して、これら 2 つの選択を 1 つに結合できる場合があります。

于 2013-01-06T03:26:26.417 に答える