Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 如何使用或对内部联接进行更新查询_Php_Mysql - Fatal编程技术网

Php 如何使用或对内部联接进行更新查询

Php 如何使用或对内部联接进行更新查询,php,mysql,Php,Mysql,如果另一个表中列中的四个值中的任何一个为“1”,我想将表中一列的值从“0”更新为“1”。不知何故,这似乎不起作用,我只是想知道是否有人可以帮助我获得正确的代码,或找到一种不同的方式来做,如果这是不可能的 mysql_query("UPDATE members INNER JOIN forum_banners ON members.id = forum_banners.userid SET members.beta = '1' WHERE foru

如果另一个表中列中的四个值中的任何一个为“1”,我想将表中一列的值从“0”更新为“1”。不知何故,这似乎不起作用,我只是想知道是否有人可以帮助我获得正确的代码,或找到一种不同的方式来做,如果这是不可能的

mysql_query("UPDATE members 
            INNER JOIN forum_banners ON members.id = forum_banners.userid
            SET members.beta = '1' WHERE forum_banners.bebeta = '1' OR 
            forum_banners.bibeta = '1' OR forum_banners.cbeta = '1' OR 
            forum_banners.wbeta = '1'") or die(mysql_error()); 

这是我尝试过的,但它不起作用,我怀疑是因为OR。我尝试在不同的mysql_查询位中进行所有更新,但也不起作用。

您应该能够从多个表引用进行更新。这是未经测试的,但给了您一个想法:

UPDATE 
    members, forum_banners 
SET 
    members.beta = '1'
WHERE 
    members.id = forum_banners.userid 
    AND forum_banners.bebeta = '1' 
    OR forum_banners.bibeta = '1' 
    OR forum_banners.cbeta = '1' 
    OR forum_banners.wbeta = '1'

注意“多表语法”

试试看

UPDATE
    m
SET 
    m.beta = '1'
FROM 
    members m
INNER JOIN 
    forum_banners fb
    ON m.id = fb.userid
WHERE 
    fb.bebeta = '1' 
    OR fb.bibeta = '1' 
    OR fb.cbeta = '1' 
    OR fb.wbeta = '1'"      

别名也有助于使您的语法更整洁。

可能重复:您的查询对我来说应该是可行的。。。它以什么方式不起作用?您确定
forum\u banner
中有符合此标准的行吗?这非常适合其他类型的SQL,但MySql对update语句中的多个表有不同的语法。