我有一个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
答案 0 :(得分:0)
使用运算符IN
代替LIKE
:
SELECT *, RANK () OVER (ORDER BY amount DESC) rank
FROM table
WHERE ',' || ? || ',' LIKE '%,' || user || ',%'
并将列表作为1个逗号分隔的值(不带空格)的字符串传递:
all('6,9,4');