id、data、category、 、timeの5 つの列を持つテーブルがありますpage。id>given idとcategory=で行を取得given categoryし、 でグループ化しpage、順序付けられた各ページから最初の行を取得し、その行の列timeを減らします。page(time一意ではありません)
私はこのクエリを作成することができましたが、うまくいきましたが、もっと良い解決策があるのではないかと思います. また、適切な質問のタイトルを選択するのにも問題がありました。それが正しいものではないと思われる場合は、遠慮なく修正してください。
UPDATE `content` AS TABLE1
INNER JOIN (SELECT MIN(TABLE2.`id`) AS ID, TABLE2.`page` FROM `content` AS TABLE2
INNER JOIN (
SELECT DISTINCT `page`, MIN(`time`) AS MINTIME
FROM `content`
WHERE (`page` > (SELECT `page` FROM `content` WHERE `id` = ?) AND `category` = ?)
GROUP BY `page`) AS TABLE3
ON TABLE2.`page` = TABLE3.`page` AND TABLE2.`time` = TABLE3.MINTIME
GROUP BY TABLE2.`page`) AS TABLE4
ON TABLE1.`id` = TABLE4.ID
SET TABLE1.`page` = TABLE1.`page` - 1