-
Notifications
You must be signed in to change notification settings - Fork 31
Description
下面的例子
//左联查询:
var sysparamodel = (from p in oms.T_SYS_PARAETER
join q in oms.T_MENU
on p.TM_ID equals q.TM_ID
into left
from q in left.DefaultIfEmpty()//左联
select new { p.TSP_PK, p.TM_ID, q.TM_NAME, p.TSP_NAME, p.TSP_KEY, p.TSP_VALUE, p.TSP_REMARK, p.TSP_STYPE,q.TM_SORT });
sysparamodel = sysparamodel.OrderBy(b => b.TM_SORT);
sysparamodel = sysparamodel.Skip(0).Take(10);
你的ef生成出来的sql:
SELECT *
FROM (SELECT "P"."TSP_PK",
"P"."TM_ID",
"Q"."TM_NAME",
"P"."TSP_NAME",
"P"."TSP_KEY",
"P"."TSP_VALUE",
"P"."TSP_REMARK",
"P"."TSP_STYPE",
"Q"."TM_SORT"
,ROWNUM AS ROWNO
FROM "T_SYS_PARAETER" "P"
LEFT JOIN "T_MENU" "Q"
ON "P"."TM_ID" = "Q"."TM_ID"
ORDER BY "Q"."TM_SORT" NULLS FIRST) A
WHERE ROWNUM <= 10 and ROWNUM> 0
但实际正确的sql应该是这样:
SELECT *
FROM (SELECT A.*, ROWNUM AS ROWNO FROM (SELECT "P"."TSP_PK",
"P"."TM_ID",
"Q"."TM_NAME",
"P"."TSP_NAME",
"P"."TSP_KEY",
"P"."TSP_VALUE",
"P"."TSP_REMARK",
"P"."TSP_STYPE",
"Q"."TM_SORT"
FROM "T_SYS_PARAETER" "P"
LEFT JOIN "T_MENU" "Q"
ON "P"."TM_ID" = "Q"."TM_ID"
ORDER BY "Q"."TM_SORT" NULLS FIRST) A
WHERE ROWNUM <= 10) WHERE ROWNO >0