gpt4 book ai didi

node.js - 给定 sql server 查询的等效 Sequelize 操作

转载 作者:行者123 更新时间:2023-12-03 22:43:13 25 4
gpt4 key购买 nike

SELECT *
FROM (SELECT *, ROW_NUMBER() OVER ( ORDER BY No_ ) AS RowNum
FROM Item) DerivedTable
WHERE RowNum >= 501 AND RowNum <= 501 + ( 5 - 1 );

我认为较旧的 sql server 版本不支持 FETCH ROWS 和 NEXT ROWS,这相当于 mysql 中的 OFFSET 和 LIMIT,上面的查询似乎是应用该逻辑的唯一方法。

sequelize 如何实现上述查询,它创建一个虚拟表“DerivedTable”,其中包含 WHERE 子句中使用的列“RowNum”。

在 sequelize 中是否还有其他方法可以做到这一点,可能包括原始查询或其他任何内容?

最佳答案

似乎您并不孤单。使用 SQL Server 2012,您可以只使用:

Model
.findAndCountAll({
where: {
title: {
$like: 'foo%'
}
},
offset: 10,
limit: 2
})
.then(function(result) {
console.log(result.count);
console.log(result.rows);
});

但是,由于您使用的是较早版本,因此您似乎坚持必须手写查询。

像这样的东西:
var theQuery = 'declare @rowsPerPage as bigint; '+
'declare @pageNum as bigint;'+
'set @rowsPerPage='+rowsPerPage+'; '+
'set @pageNum='+page+'; '+
'With SQLPaging As ( '+
'Select Top(@rowsPerPage * @pageNum) ROW_NUMBER() OVER (ORDER BY ID asc) '+
'as resultNum, * '+
'FROM myTableName)'+
'select * from SQLPaging with (nolock) where resultNum > ((@pageNum - 1) * @rowsPerPage);';
sequelize.query(theQuery)
.spread(function(result) {
console.log("Good old paginated results: ", result);
});
});

thisthis

关于node.js - 给定 sql server 查询的等效 Sequelize 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37316343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com