在我的 node.js 模块中,我在一个数组中有一些数据,我需要构建一个查询:
var valueClause = "(fieldA = '" + data.fieldA + "' AND fieldB = '";
var whereClause = ' WHERE ';
var hasAdded = false;
data.accounts.forEach(function (account) {
whereClause += valueClause + account.fieldB + "') OR ";
hasAdded = true;
})
if (hasAdded) {
// remove OR
whereClause = whereClause.substring(0, whereClause.length - 3);
// use the whereClause in the query
...
}
在上述代码的末尾,如果我有 2 个帐户,我有 whereClause:
' WHERE (fieldA = 'abcde' AND fieldB = '0003') 或 (fieldA = 'abcde' AND fieldB = '0002') 或
我总是必须删除最后一个“或”位。
有没有更聪明的方法来构造上面的内容?
最佳答案
由于 fieldA 的值似乎在循环中固定,您可以编写此查询
WHERE fieldA = 'abcde' AND fieldB IN ('0002','0003')
由于您没有准备好的 SQL 语句,您可以直接使用数组,因此您必须加入类似于您的方法的值。
如果保证至少存在一个值,我总是在循环中连接前导逗号并使用值的 substr(1)
关于sql - 构建查询的更智能方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46742146/