如何使用Knex实现含多WHERE子句的数据查询
用Knex实现目标SQL查询
以下是对应目标SQL的Knex实现代码,同时修正了原SQL中判断NULL的语法问题(SQL里判断NULL需用IS NULL而非=):
knex('table_name') .select('*') .where('email', '') .where(function() { this.whereNull('received').orWhere('received', '') }) .where('orderNumber', '')
代码对应SQL逻辑说明:
knex('table_name')对应FROM table_name.select('*')对应SELECT *.where('email', '')匹配email = ''- 回调函数包裹的部分对应原SQL中括号里的OR条件,
whereNull('received')生成received IS NULL,orWhere('received', '')生成received = '',两者组合会自动带上括号,保证逻辑优先级 .where('orderNumber', '')匹配orderNumber = ''
如果偏好直接写SQL片段,也可以用whereRaw实现:
knex('table_name') .select('*') .where('email', '') .whereRaw('(received IS NULL OR received = ?)', ['']) .where('orderNumber', '')
内容的提问来源于stack exchange,提问作者angry kiwi
相关产品推荐
相关产品推荐

