假设我有一个表格,如:
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语法,使其更容易理解,因为它们对解决方案没有贡献。)