有没有办法获得超过 1 个值?
Is there a way to get more than 1 value using?
我有一个 better-sqlite3
语句对我的数据库进行排序和排名,我有一个 IN
语句所以我可以 select 超过 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
我如何在不知道数组长度的情况下 select 多个值(因此 ?,?
不会削减它),并允许尽可能多的值?我使用了 ?*
,但出现语法错误。
我正在使用 better-sqlite3
用于 Node.JS
而不是 IN
使用运算符 LIKE
:
SELECT *, RANK () OVER (ORDER BY amount DESC) rank
FROM table
WHERE ',' || ? || ',' LIKE '%,' || user || ',%'
并将列表作为 1 个逗号分隔值字符串(无空格)传递:
all('6,9,4');
我有一个 better-sqlite3
语句对我的数据库进行排序和排名,我有一个 IN
语句所以我可以 select 超过 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
我如何在不知道数组长度的情况下 select 多个值(因此 ?,?
不会削减它),并允许尽可能多的值?我使用了 ?*
,但出现语法错误。
我正在使用 better-sqlite3
用于 Node.JS
而不是 IN
使用运算符 LIKE
:
SELECT *, RANK () OVER (ORDER BY amount DESC) rank
FROM table
WHERE ',' || ? || ',' LIKE '%,' || user || ',%'
并将列表作为 1 个逗号分隔值字符串(无空格)传递:
all('6,9,4');