sql - 构建查询的更智能方式

标签 sql node.js algorithm

在我的 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/

相关文章:

以选择为条件的mysql更新查询

node.js - 新连接的客户端如何在 AWS IOT 中获取旧消息

javascript - 发送excel文件数据到Node.js服务器并解析成json

algorithm - 如何生成凸多边形

algorithm - 在不创建边池的情况下确定扑克中的获胜金额

PHP SQL LEFT JOIN 语句丢失一列

mysql - 带有 ORDER BY 子句的 MySQL 中的累计和

javascript - cordova Zeroconf 如何支持?

algorithm - 整数时间复杂度的位计数算法 (Brian Kernighan)

php - 获取数组中的所有 Woocommerce 产品 ID