Обновление базы и оставление 5, чтобы это не повлияло - PullRequest
0 голосов
/ 01 февраля 2020

Я хочу обновить базу данных, но я хочу оставить 5 постов, чтобы они не пострадали, а остальные обновляются в соответствии с запросом.

Я попробовал метод ниже, но он не сработал, кто-то может взломать этот код. Спасибо.

UPDATE `post` SET active = '1' 
WHERE `user` = '".$my['id']."' 
NOT IN (SELECT id FROM `post` 
WHERE `user` = '".$my['id']."' LIMIT 5)

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

Перемещение подзапроса в JOIN:

UPDATE post p LEFT JOIN
       (SELECT p.id
        FROM post p
        WHERE p.user = '".$my['id']."'
        LIMIT 5
       ) pp
       ON p.id = pp.id
    SET active = '1' 
WHERE p.user = '".$my['id']."' AND
      pp.id IS NULL;

MySQL не позволяет легко ссылаться на таблицу, обновляемую в подзапросе в предложениях WHERE или SET. Тем не менее, он позволяет JOIN s, которые являются рекомендуемым способом решения этой проблемы.

0 голосов
/ 01 февраля 2020

Попробуйте это

UPDATE post SET active = '1' 
WHERE `user` = '".$my['id']."' and id not IN (
    SELECT id FROM (
        SELECT id FROM post
        WHERE `user` = '".$my['id']."'
        ORDER BY id ASC  
        LIMIT 0, 5
    ) tmp
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...