有没有一种方法可以使用多个值?

时间:2020-08-15 20:11:16

标签: sqlite better-sqlite3

我有一个better-sqlite3语句来对数据库进行排序和排序,并且我有一个IN语句,因此我可以选择多于1行。那就是我遇到的一个问题,我需要基于动态ID数组获取多行。

我的SQLITE语句如下:

Table.prepare('SELECT *, RANK () OVER (ORDER BY amount DESC) rank FROM table WHERE user IN(?)');

我试图从这样的陈述中得出结论:

getAll.get(['1','2','3']);
getAll.get('6,9,4');
getAll.get('7','5','8');

我得到一个错误:

RangeError: Too many parameter values were provided

在不知道数组长度的情况下如何精确地选择多个值(因此?,?不会削减它),并允许尽可能多的值?我使用了?*,但出现语法错误。

我在better-sqlite3中使用Node.JS

1 个答案:

答案 0 :(得分:0)

使用运算符IN代替LIKE

SELECT *, RANK () OVER (ORDER BY amount DESC) rank 
FROM table 
WHERE ',' || ? || ',' LIKE '%,' || user || ',%'

并将列表作为1个逗号分隔的值(不带空格)的字符串传递:

all('6,9,4');