如何在mySQL中使用不同的where子句更新多个列

时间:2015-03-13 19:39:57

标签: mysql sql-update multiple-columns

我试图更新表中的多个列,这些列在单个查询中都需要不同的where子句。我在sql上并不令人惊讶,并且很难在谷歌上找到帮助。我试图实现这样的目标

UPDATE $table 
SET meta_value = 'john',
    meta_value = 'v1234'
WHERE   meta_key = 'name' AND post_id=$post_id,
        meta_key = 'trak' AND post_id=$post_id"

这个想法是第一个SET匹配第一个WHERE,第二个SET匹配第二个WHERE等。理想情况下,id可以执行其中的许多操作。任何想法我怎么能做到这一点?

2 个答案:

答案 0 :(得分:3)

Update $table
set meta_value = CASE WHEN meta_key = 'name' then 'john'
                      WHEN meta_key = 'trak' then 'v1234' end
where post_Id = $post_ID 

答案 1 :(得分:0)

UPDATE $table 
SET meta_value = IF(meta_key='name','john','v1234')
WHERE   post_id=$post_id AND
    meta_key IN ('trak','name')