Node-mysql:如何在WHERE子句中选择多个OR?如何创建查询?

时间:2013-09-02 18:31:57

标签: node-mysql

我收到这样一个数组:

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

我需要在OR子句中实现一个WHERESELECT foo, bar FROM tbl WHERE (a.bar = 1 OR a.bar = 2 OR a.bar = 3 ... and so on) 的查询。我从我的数组中获取值。它看起来像这样:

WHERE

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

2 个答案:

答案 0 :(得分: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\')

我认为更干净。

答案 1 :(得分: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 = ') + ')';

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