質問編集履歴

3

一部修正

2022/02/10 06:04

投稿

nikuatsu
nikuatsu

スコア177

test CHANGED
File without changes
test CHANGED
@@ -41,8 +41,8 @@
41
41
  # LIMIT 4, 2; # 3ページ目 →【ID=1,6 が取得される】
42
42
  ```
43
43
  しかし、1ページ目の読み込み直後に下記の `UPDATE` がされた場合、2ページ目で
44
- `LIMIT 2, 2; # 2ページ目 →【ID=3,2 が取得される】` でなく
44
+ 【ID=3,2 が取得される】 でなく
45
- `LIMIT 2, 2; # 2ページ目 →【ID=2,1 が取得される】` になってしまい、ID=3 が取得からモレるという問題です。
45
+ 【ID=2,1 が取得される】 になってしまい、ID=3 が取得からモレるという問題です。
46
46
  ```SQL
47
47
  UPDATE `comments`
48
48
  SET like_count = 20, updated_at = '2022-02-01 01:00:01'

2

誤字訂正

2022/02/09 16:46

投稿

nikuatsu
nikuatsu

スコア177

test CHANGED
File without changes
test CHANGED
@@ -60,7 +60,7 @@
60
60
  ■次ページの取得
61
61
  https://use-the-index-luke.com/ja/sql/partial-results/fetch-next-page
62
62
 
63
- 続いて `OFFSET` を用いず次のように `WHERE` でのアプローチを試みました。`?`には直前ページの最後のコンテンツの`count_likes`を入れ、ページ訪問日時を`update_at`に入れます。これにより重複は防げますが、新たなモレが生じてしまい実現できませんでした。
63
+ 続いて `OFFSET` を用いず次のように `WHERE` でのアプローチを試みました。`?`には直前ページの最後のコンテンツの`like_count`を入れ、ページ訪問日時を`update_at`に入れます。これにより重複は防げますが、新たなモレが生じてしまい実現できませんでした。
64
64
  ```SQL
65
65
  WHERE
66
66
  ( like_count = ? AND ID < ? ) OR

1

リンクの追記

2022/02/09 16:23

投稿

nikuatsu
nikuatsu

スコア177

test CHANGED
File without changes
test CHANGED
@@ -48,6 +48,8 @@
48
48
  SET like_count = 20, updated_at = '2022-02-01 01:00:01'
49
49
  WHERE ID = 4;
50
50
  ```
51
+ 以上の問題はこちらで実行して頂けますのでよろしければどうぞ。
52
+ http://sqlfiddle.com/#!9/3d1ac7/1
51
53
 
52
54
  ### 試したこと
53
55
  まず検索で次の記事を見つけましたが、いずれもソートカラムが可変でないケースに限るように見受けられます。