我正在使用MySQL和... MSSQL在我的项目中,我限制了condtn,distinct并将我的查询与分页结合起来。
MYSQL查询工作正常,但在LIMIT查询中使用distinct时,MSSQL查询出错。
MYSQL QUERY:
SELECT DISTINCT p_rework
, p_approved
, pf_id
, pf_plan
, pf_ver
, pf_createdby
, pf_createdon createdon
, pf_updatedby
, pf_updatedon
, pf_approvedby
, pf_approvedon
, 0 p_runs
, '' runname
, '' runstatus
, '' scheduledon
, '' runon
FROM planinfo a
, plans b
WHERE a.pf_id = b.p_id
AND pf_project='proj001'
AND p_approved IN(0,3,4)
GROUP BY pf_id
, pf_createdon
, pf_updatedon
, pf_plan
, pf_ver
, pf_createdby
, pf_updatedby
, pf_approvedby
, pf_approvedon
, b.p_createdon
, b.p_approved
, p_rework
ORDER BY pf_id DESC
LIMIT 0,5
以上MYSQL查询工作正常但MSSQL查询无法正常工作 MSSQL QUERY:
select *
from (
select ROW_NUMBER() over (ORDER BY pf_id DESC) AS Row
, distinct p_rework
, p_approved
, pf_id
, pf_plan
, pf_ver
, pf_createdby
, pf_createdon createdon
, pf_updatedby
, pf_updatedon
, pf_approvedby
, pf_approvedon
, 0 p_runs
, '' runname
, '' runstatus
, '' scheduledon
, '' runon
FROM planinfo a
, plans b
WHERE a.pf_id = b.p_id
AND pf_project='proj001'
AND p_approved In(0,3,4)
GROUP BY pf_id
, pf_createdon
, pf_updatedon
, pf_plan
, pf_ver
, pf_createdby
, pf_updatedby
, pf_approvedby
, pf_approvedon
, b.p_createdon
, b.p_approved
, p_rework
) as temp
WHERE row between 0 and 5
MSSQL错误:
Incorrect syntax near the keyword 'distinct'.
没有明显的我尝试过它的工作,但分页不起作用,我也希望显示不同的价值。
如何使用distinct?
修改我的查询答案 0 :(得分:0)
试试这个:
;WITH t AS
(
select distinct ROW_NUMBER() over (ORDER BY pf_id DESC) AS Row
, p_rework
, p_approved
, pf_id
, pf_plan
, pf_ver
, pf_createdby
, pf_createdon createdon
, pf_updatedby
, pf_updatedon
, pf_approvedby
, pf_approvedon
, 0 p_runs
, '' runname
, '' runstatus
, '' scheduledon
, '' runon
FROM planinfo a
, plans b
WHERE a.pf_id = b.p_id
AND pf_project='proj001'
AND p_approved In(0,3,4)
GROUP BY pf_id
, pf_createdon
, pf_updatedon
, pf_plan
, pf_ver
, pf_createdby
, pf_updatedby
, pf_approvedby
, pf_approvedon
, b.p_createdon
, b.p_approved
, p_rework
)
SELECT * FROM t WHERE t.Row between 0 and 5