【发布时间】:2017-02-15 10:28:25
【问题描述】:
将查询从 Mysql 迁移到 SQL Server 时遇到很多问题。我有这个查询有点复杂,但在 mysql 中它工作正常。
我有一个从表联合选择到另一个表不等于的选择以及对结果进行分页的限制,因为返回的行很多。当我尝试迁移到 SQL Server 时,使用联合的选择工作正常。当我阅读如何在 T-SQL、stackoverflow 和其他页面中实现限制时,我学会了如何做,但是当我尝试将它应用于我的查询时,它没有运行并且 SQL Server 返回错误。
没有限制的查询如下(这个查询很好用):
SELECT
'false' AS historico,
'' AS tabla,
a.nombre,
a.apellido1,
a.apellido2
FROM
persons a
WHERE
a.eliminado = 'N'
AND (idconv = 30)
UNION ALL
SELECT
'true' AS historico,
b.tabla,
b.nombre,
b.apellido1,
b.apellido2
FROM
persons_hist b
WHERE
b.eliminado = 'N'
AND (tabla = '1955')
ORDER BY
apellido1 ASC
但是当我尝试添加“分页”,例如从 0 开始的 10 行时,此查询返回第一个表中的 18 行 9 行和第二个表中的 9 行,但我必须分页,例如从 10 行2 个表的并集。
;WITH Results_CTE AS
(
select
ROW_NUMBER() OVER (ORDER BY apellido1 asc ) AS RowNum ,
'false' as historico,
'' as tabla,
a.nombre, a.apellido1, a.apellido2
from
persons a
where
a.eliminado = 'N' and (idconv = 30)
union all
select
ROW_NUMBER() OVER (ORDER BY apellido1 asc ) AS RowNum ,
'true' as historico,
b.tabla, b.nombre, b.apellido1, b.apellido2
from
persons_hist b
where
b.eliminado = 'N' and (tabla = '1997')
)
SELECT *
FROM Results_CTE
WHERE RowNum >= 0
AND RowNum < 0 + 10
有人可以帮帮我吗?
【问题讨论】:
标签: sql sql-server sql-server-2008 sorting pagination