当前使用版本(必填,否则不予处理)
3.4.3.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
分页排序获取数据总数时的排序引起
重现步骤(如果有就写完整)
例如xml 中执行sql
select
orderMain.FID as id,
orderMain.FBillno as orderNumber,
orderMain.FContractNo as contractNumber,
orderMain.FXSDQ_Name as salesRegionName,
orderMain.FCustomer_Name as customerName,
orderMain.FYWY_Name as salesmanName,
orderMain.FLinkMan as consigneeName,
orderMain.FLinkManPhone as consigneeMobile,
orderMain.FJHDD as receivingAddressName,
orderMain.FLinkManAddr as detailedAddress,
orderMain.FIsKP as billing,
orderMain.FOrderSum as orderAmount,
orderMain.FOld as oldOrder,
orderMain.FDate as fdate,
ISNULL(review.doc_status,'-1') as processStatus
from LB_DB_OrderOnline orderMain
left join [192.168.100.53].ekp.dbo.ekp_LB_LC_DBXSDD lblc on orderMain.FBillno=lblc.fd_DDBH
left join [192.168.100.53].ekp.dbo.km_review_main review on lblc.fd_id=review.fd_id
where orderMain.FOld='0' and
orderMain.FBillno not like '%test%'
and orderMain.FOperatorId=13665
order by orderMain.FDate desc
这条语句是可以正常执行的,但是在分页第一步获取总数时,会自动执行的sql如下:
SELECT
COUNT(*)
FROM
(select
orderMain.FID as id,
orderMain.FBillno as orderNumber,
orderMain.FContractNo as contractNumber,
orderMain.FXSDQ_Name as salesRegionName,
orderMain.FCustomer_Name as customerName,
orderMain.FYWY_Name as salesmanName,
orderMain.FLinkMan as consigneeName,
orderMain.FLinkManPhone as consigneeMobile,
orderMain.FJHDD as receivingAddressName,
orderMain.FLinkManAddr as detailedAddress,
orderMain.FIsKP as billing,
orderMain.FOrderSum as orderAmount,
orderMain.FOld as oldOrder,
orderMain.FDate as fdate,
ISNULL(review.doc_status,
'-1') as processStatus
from
LB_DB_OrderOnline orderMain
left join
[192.168.100.53].ekp.dbo.ekp_LB_LC_DBXSDD lblc
on orderMain.FBillno=lblc.fd_DDBH
left join
[192.168.100.53].ekp.dbo.km_review_main review
on lblc.fd_id=review.fd_id
where
orderMain.FOld='0'
and orderMain.FBillno not like '%test%'
and orderMain.FOperatorId=13665
order by orderMain.FDate desc) TOTAL
这条语句在SQLserver中是无法执行的,正确的做法应该是在获取总数时将order by 去掉,再真正获取分页数据查询时加上
报错信息
除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
Comment From: fye1234
我也遇到了同样的问题。
Comment From: qmdx
自定义 count sql