Mysql UPDATE与多个Where语句

时间:2015-08-02 13:04:52

标签: php mysql sql

我创建了一个脚本,使用For循环和all自动创建Update语句,最终结果执行:

mysql_query("UPDATE table2 
              SET(code2='sfvv' WHERE number='1'),
                 (code2='sdvsdv' WHERE number='2') 
              WHERE id='32'") or die ( mysql_error() );

错误说:你的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在'(code2 ='sfvv'WHERE number ='1')附近使用正确的语法,(code2 ='sdvsdv'WHERE number ='2')我在哪里1

3 个答案:

答案 0 :(得分:2)

您使用ANDOR语句来组合条件:

UPDATE table2
SET code2 = 'sfvv'
WHERE
    (number = '1'AND code2 = 'sdvsdv')
    OR
    (number = '2' AND id = '32')

您可以使用逗号分隔语句来更新同一行中的多个值:

UPDATE table2
SET code2 = 'sfvv', code3 = 'abc'

如果需要根据不同的条件更新不同的行,则需要执行多个查询:

UPDATE table2 SET code2 = 'sfvv' WHERE id = 1;
UPDATE table2 SET code3 = 'abc' WHERE id = 2;

正如提到的另一个答案,您还可以在SET子句中使用案例陈述:

UPDATE table2
SET code2 = CASE WHEN number = 1 THEN 'foo' ELSE 'bar' END

但这并非100%灵活。在有意义的时候使用它。

答案 1 :(得分:2)

我想你需要case statement

UPDATE table2 
SET code2= case number when 1 then 'sfvv' when 2 then 'sdvsdv' END
where id = 32

答案 2 :(得分:1)

Update  table2 
     SET code2= CASE 
                 WHEN  number=1 THEN 'sfvv'
                 WHEN  number=2 THEN 'sdvsdv'
                 ELSE  code2
                 END 
     WHERE id = 32

希望有所帮助