1

私のmysql dbには、3つのパラメーター( name 、 views 、 id )を持つテーブルがあります。ビューで並べ替えられた行を取得する必要があります。私はこのようなものを得ています。

クエリ:

select 
from table 
order by views

結果:

   id    |  name   |  views
   ------------------------
   7     |  xxxx   |  9000
   2     |  yyyy   |  8000
   1     |  aaaa   |  7000
   4     |  bbbb   |  6000
   8     |  dddd   |  5000
   6     |  cccc   |  4000
   5     |  oooo   |  3000
   3     |  tttt   |  2000

私がする必要があるのは、ビューによって並べ替えられた行を取得することですが、特定の ID で始まります。出来ますか。私が持っているすべての入力はIDです。ID が 6 であることを確認すると、次のように出力されます。

   id    |  name   |  views
   ------------------------       
   6     |  cccc   |  4000
   5     |  oooo   |  3000
   3     |  tttt   |  2000

現時点では位置が何であるかがよくわからないため、LIMIT を使用できません。IDで始まる行を取得するだけです。


私がやろうとしているのは、無限スクロールを取得することです。表示された最後の要素に基づいて次の要素を要求します。唯一のトリッキーな部分は、ビュー パラメーターで注文していることです。

4

2 に答える 2

0
select * from table
where (views = 4000 and id>6) or (views < 4000) 
order by views desc, id asc;

注意が必要なのは、ID 6 の要素のビューを知る (選択する) 必要があることです。また、一貫した結果を得るために、ID を二次ソート基準として使用する必要があります。

実際、これはページングの since,until タイプの一般的なケースです。

于 2012-05-07T14:57:16.963 に答える
0
SELECT * FROM table 
WHERE views <= (SELECT views FROM table WHERE id = 6) 
ORDER BY views
于 2012-05-07T14:59:22.173 に答える