0

iddatacategory、 、timeの5 つの列を持つテーブルがありますpageid>given idcategory=で行を取得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
4

1 に答える 1