使用每行的多个where子句更新多行。 (update_batch只能处理1 where子句)

时间:2013-03-11 13:56:45

标签: mysql sql-update

我正在尝试像这样更新我的表:

Update MyTable 
SET value     = 1 
WHERE game_id = 1,
      x       =-4,
      y       = 8

SET value     = 2 
WHERE game_id = 1,
      x       =-3,
      y       = 7

SET value     = 3 
WHERE game_id = 2,
      x       = 5,
      y       = 2

我可以执行foreach(),但会发送超过50个单独的查询,这非常慢。 这就是为什么我希望将它合并为一个大查询。

(我确实为每一行使用了 id ,但 game_id x y 的组合是我用什么来识别我需要的行。)

此处描述的codeIgniter中的update_batch()函数: Update batch with CodeIgniter 是有用的,几乎完美,但它只允许1个单独的where子句,你不能(据我所知和尝试)输入一个包含多个where子句的数组。

我也查看了这个问题: MYSQL UPDATE SET on the Same Column but with multiple WHERE Clauses 但它只允许多行更新只包含一个不同的WHERE子句,我需要多个WHERE子句! :)

Anwsers可以使用简单的SQL,也可以使用php(和CodeIgniter)或以不同的方式使用。我想以任何可能的方式解决这个问题;)

我真的可以使用建议/帮助! = D

编辑:

对不起,这个问题不够明确,我刚才改了!

2 个答案:

答案 0 :(得分:0)

我觉得你需要逻辑运算符AND

UPDATE MyTable
SET value = 1
WHERE game_id = 1
AND x         = -4
AND y         = 8

答案 1 :(得分:0)

我不熟悉多个WHERE条款如何布局,为什么不做呢

UPDATE MyTable 
SET value     = 1 
WHERE game_id = 1
AND x         = -4
AND y         = 8