【问题标题】:Update multiple rows with multiple where clauses for each row. (update_batch can only handle 1 where clause) [duplicate]使用每行的多个 where 子句更新多行。 (update_batch 只能处理 1 个 where 子句)[重复]
【发布时间】:2013-03-11 13:56:44
【问题描述】:

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

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 个单独的查询,这非常慢。 这就是为什么我希望将其合并为 1 个大查询。

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

此处描述的 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

编辑:

抱歉问题不够清楚,我刚刚改了!

【问题讨论】:

标签: mysql sql-update


【解决方案1】:

看来你需要逻辑运算符AND:

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

【讨论】:

    【解决方案2】:

    我不熟悉多个 WHERE 子句的布局方式,为什么不这样做

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

    【讨论】:

      猜你喜欢
      • 2013-02-26
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多