From 4f5cbd93b878486400ef54d6c8c0c545c290ed6c Mon Sep 17 00:00:00 2001 From: zqlovejyc <943620963@qq.com> Date: Thu, 30 Dec 2021 17:13:42 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96Page=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQLBuilder.Core/Entry/SqlBuilderCore.cs | 32 ++++--------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/SQLBuilder.Core/Entry/SqlBuilderCore.cs b/SQLBuilder.Core/Entry/SqlBuilderCore.cs index cf3e398..63f65b1 100644 --- a/SQLBuilder.Core/Entry/SqlBuilderCore.cs +++ b/SQLBuilder.Core/Entry/SqlBuilderCore.cs @@ -4601,21 +4601,11 @@ public SqlBuilderCore Page(int pageSize, int pageIndex, string orderField, st //MySQL,注意8.0版本才支持WITH语法 if (this.sqlWrapper.DatabaseType == DatabaseType.MySql) - { sb.Append($"SELECT {countSyntax} AS `TOTAL` FROM ({sql}) AS T;{sql} {order} LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};"); - } - - //PostgreSQL - if (this.sqlWrapper.DatabaseType == DatabaseType.PostgreSql) - { - sb.Append($"SELECT {countSyntax} AS \"TOTAL\" FROM ({sql}) AS T;{sql} {order} LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};"); - } - //SQLite - if (this.sqlWrapper.DatabaseType == DatabaseType.Sqlite) - { + //PostgreSQL、SQLite + if (this.sqlWrapper.DatabaseType == DatabaseType.PostgreSql || this.sqlWrapper.DatabaseType == DatabaseType.Sqlite) sb.Append($"SELECT {countSyntax} AS \"TOTAL\" FROM ({sql}) AS T;{sql} {order} LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};"); - } this.sqlWrapper.Reset(sb); @@ -4669,13 +4659,9 @@ public SqlBuilderCore PageByWith(int pageSize, int pageIndex, string orderFie if (this.sqlWrapper.DatabaseType == DatabaseType.SqlServer) { if (dbVersion > 10) - { sb.Append($"{sql} SELECT {countSyntax} AS [TOTAL] FROM T;{sql.Remove(sql.LastIndexOf(")"), 1)} {(orderField.IsNotNullOrEmpty() ? order : "")}) SELECT * FROM T OFFSET {(pageIndex - 1) * pageSize} ROWS FETCH NEXT {pageSize} ROWS ONLY;"); - } else - { sb.Append($"{sql} SELECT {countSyntax} AS [TOTAL] FROM T;{sql},R AS (SELECT ROW_NUMBER() OVER ({order}) AS [ROWNUMBER], * FROM T) SELECT * FROM R WHERE [ROWNUMBER] BETWEEN {(pageIndex - 1) * pageSize + 1} AND {pageIndex * pageSize};"); - } } //Oracle,注意Oracle需要分开查询总条数和分页数据,此方法仅包含分页语句 @@ -4689,21 +4675,11 @@ public SqlBuilderCore PageByWith(int pageSize, int pageIndex, string orderFie //MySQL,注意8.0版本才支持WITH语法 if (this.sqlWrapper.DatabaseType == DatabaseType.MySql) - { sb.Append($"{sql} SELECT {countSyntax} AS `TOTAL` FROM T;{sql.Remove(sql.LastIndexOf(")"), 1)} {order}) SELECT * FROM T LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};"); - } - - //PostgreSQL - if (this.sqlWrapper.DatabaseType == DatabaseType.PostgreSql) - { - sb.Append($"{sql} SELECT {countSyntax} AS \"TOTAL\" FROM T;{sql.Remove(sql.LastIndexOf(")"), 1)} {order}) SELECT * FROM T LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};"); - } - //SQLite - if (this.sqlWrapper.DatabaseType == DatabaseType.Sqlite) - { + //PostgreSQL、SQLite + if (this.sqlWrapper.DatabaseType == DatabaseType.PostgreSql || this.sqlWrapper.DatabaseType == DatabaseType.Sqlite) sb.Append($"{sql} SELECT {countSyntax} AS \"TOTAL\" FROM T;{sql.Remove(sql.LastIndexOf(")"), 1)} {order}) SELECT * FROM T LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};"); - } this.sqlWrapper.Reset(sb);