对于在使用sql server (tsql)之前在复杂查询中使用分页,我可以非常轻松地使用 count (*) OVER()作为TotalCount在任何复杂查询中返回总计数,我可以在分页中使用它,但在mysql中它不能工作。
要用asp.net核心连接mysql,有两个包
我使用了这两种方法,但我不知道如何在存储过程中实现分页并使用FromSqlRaw返回问题,问题是返回行数OUT TotalCount INT (我无法得到)
DELIMITER $$
CREATE PROCEDURE get_articles(IN _offset INT, IN _count INT, OUT _total INT)
BEGIN
SELECT SQL_CALC_FOUND_ROWS *
FROM content c JOIN content_types t
ON c.content_type = t.id
WHERE t.name = 'article'
LIMIT _offset, _count;
SET _total = FOUND_ROWS();
END$$
DELIMITER ;c#与MySql.Data.EntityFrameworkCore
var result = await dbContext.Result.FromSqlRaw("CALL get_articles (0,30,@TotalCount)",totalCount
).AsNoTracking().ToListAsync();这是SQLFiddle演示
发布于 2020-05-17 18:53:18
您的过程应该包含第一个元素或页码,然后可以在SQL中组合限制关键字。例如,极限kpagecount_pagenumber,k_pagecount(pagenumber+1)-1也有一个版本,它的偏移量为m。
编辑后:请在您的调用(C#)中还包括参数。
https://stackoverflow.com/questions/61856829
复制相似问题