使用MySQL中的一个查询更新具有不同值的多行

时间:2018-01-25 18:47:14

标签: mysql node.js

假设我有一个表格,如:

CREATE TABLE IF NOT EXISTS temporary
(
    id INT NOT NULL,
    field1 INT NOT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

现在假设我想分别使用数据100 200 300更新ID为1 2 3的行。是否可以通过一个查询实现这一点。 (在这种特殊情况下,我知道它的3个ID,所以我可以只使用案例"在查询中进行硬编码",但在实际上我不知道是否有1个,10个或20个ID因此我不能用例。

我唯一可能的解决方案是在我的代码中进行查询; 例如:

var PASSED_QUERY = 
"tmp.field1 =
 (CASE 
     WHEN id=1 THEN field1=100,
     WHEN id=2 THEN field1=200,
     WHEN id=3 THEN field1=300
     ELSE field1 
 END)";

var ARRAY = [1,2,3];

并将其传递给Mysql,如UPDATE temporary tmp SET PASSED_QUERY WHERE tmp.id IN(ARRAY);

还有更好的方法吗?

(在这个例子中,我省略了一些nodejs语法,使其更容易理解,因为它们对解决方案没有贡献。)

0 个答案:

没有答案