如何使用Bookshelf.js编写条件更新查询?

时间:2018-08-13 07:53:31

标签: mysql knex.js bookshelf.js

我有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())?

1 个答案:

答案 0 :(得分:0)

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

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