Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新数据库并保留5,使其不受影响_Php_Mysql_Sql_Database - Fatal编程技术网

Php 更新数据库并保留5,使其不受影响

Php 更新数据库并保留5,使其不受影响,php,mysql,sql,database,Php,Mysql,Sql,Database,我想更新数据库,但我想留下5个帖子,这样他们就不会受到影响,其余的都会按要求更新 我尝试了下面的方法,但没有成功,是否有人能够破解此代码。 多谢各位 UPDATE `post` SET active = '1' WHERE `user` = '".$my['id']."' NOT IN (SELECT id FROM `post` WHERE `user` = '".$my['id']."' LIMIT 5) 试试这个 UPDATE post SET active = '1' WHER

我想更新数据库,但我想留下5个帖子,这样他们就不会受到影响,其余的都会按要求更新

我尝试了下面的方法,但没有成功,是否有人能够破解此代码。 多谢各位

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

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
)

将子查询移动到一个
联接

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,这是解决此问题的推荐方法。

mysql不支持子查询中的限制,您可以使用JOIN。“但它不起作用”--这意味着什么?上面的代码没有改变任何问题并发布a。此外,在子句中不允许该限制,你到底想在你身上实现什么呢?如果克劳斯这样做,我有三天的时间来解决这个问题。谢谢师父