2

我收到这样一个数组:

[1,2,3,4,5];

我需要实现一个有很多ORs inWHERE子句的查询。我从我的数组中获取值。它看起来像这样:

SELECT foo, bar FROM tbl WHERE (a.bar = 1 OR a.bar = 2 OR a.bar = 3 ... and so on)

如何WHERE在 node-mysql 中创建这样的部分?或者如何传递参数?

4

2 回答 2

8

我知道这已经相当老了,但我已经取得了成功,至少最近版本的 node-mysql 使用这种格式:

var titles = ['title 1', 'title 2'];
var sql = 'SELECT t.id ' +
          '  FROM topics t ' +
          ' WHERE t.title IN (?)';
var params = [titles];

这很好地转化为:

SELECT t.id FROM topics t WHERE t.title IN (\'title 1\', \'title 2\')

干净多了,我想。

于 2014-02-28T21:09:42.173 回答
1

简单的事情就是使用join()数组的

 var values = [1, 2, 3, 4, 5];
 var query = 'SELECT foo, bar FROM tbl WHERE (a.bar = ';
 query = query + values.join(' OR a.bar = ') + ')';

这将生成您正在寻找的查询

于 2013-09-17T03:10:40.457 回答