如何解决有没有一种方法可以使用多个值?
我有一个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
解决方法
使用运算符IN
代替LIKE
:
SELECT *,RANK () OVER (ORDER BY amount DESC) rank
FROM table
WHERE ',' || ? || ',' LIKE '%,' || user || ',%'
并将列表作为1个逗号分隔的值(不带空格)的字符串传递:
all('6,9,4');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。