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