我有Mysql查询,它可以同时更新多个记录

UPDATE Settings
SET value = (case when property_Name = 'p1' then 'updated p1'
                     when property_Name = 'p2' then 'updated p2'
                     when property_Name = 'p3' then 'updated p3'
                end)
WHERE property_Name in ('p1', 'p2', 'p3') AND vendor_Id = 5;


如何使用Bookshelf.js / knex在更新查询中编写大小写?

一种方法是将整个查询写入

knex.raw('UPDATE Settings
    SET value = (case when property_Name = 'p1' then 'updated p1'
                         when property_Name = 'p2' then 'updated p2'
                         when property_Name = 'p3' then 'updated p3'
                    end)
    WHERE property_Name in ('p1', 'p2', 'p3') AND vendor_Id = 5;');


还有什么其他方法可以使用Bookshelf.js编写查询(避免使用knex.raw())?

最佳答案

我不知道如何避免knex,但是您不需要case语句。

knex.raw('UPDATE Settings
    SET value = CONCAT('updated ',property_Name)
    WHERE property_Name in ('p1', 'p2', 'p3') AND vendor_Id = 5;');

关于mysql - 如何使用Bookshelf.js编写条件更新查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51817601/

10-16 13:46