如何使用OR在INNER JOIN上进行UPDATE查询

时间:2012-02-09 21:50:10

标签: php mysql

如果另一个表中的列中的四个值中的任何一个为“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_query位中进行所有更新,但这也不起作用。

2 个答案:

答案 0 :(得分:0)

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

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'

http://dev.mysql.com/doc/refman/5.0/en/update.html

注意"多表语法"

答案 1 :(得分:0)

尝试

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'"      

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