如何将两个带条件的StudentOrders表更新查询合并为一个?
合并两个更新查询为单个查询方案
你可以利用SQL的CASE条件表达式,在TypeORM的QueryBuilder里实现一次更新完成两种状态的设置,代码如下:
await getConnection() .createQueryBuilder() .update(StudentOrders) .set({ OrderTypes: () => "CASE WHEN allowRemote = true THEN 'Fresh' ELSE 'Old' END" }) .execute();
说明
- 这个查询会遍历
StudentOrders表的所有记录,根据allowRemote字段的值自动设置对应的OrderTypes:- 当
allowRemote为true时,OrderTypes设为'Fresh' - 当
allowRemote为false时,OrderTypes设为'Old'
- 当
- 相比原来的两次查询,这种方式只需要和数据库建立一次连接并执行一次操作,效率更高。
内容的提问来源于stack exchange,提问作者Adeel Abbas
相关产品推荐
相关产品推荐

