3
我有一个父/子表设置 - Items/ItemDetails。这部分工作:ServiceStack.OrmLite在SQL.In中使用限制过滤器
var q = db.From<Item>(); //various where clauses based on request
items = db.Select<Item>(q);
q = q.Select(a => a.ITEM_NO);
itemDetails = db.Select<ItemDetail>(x => Sql.In(x.ITEM_NO, q));
尝试添加分页改善,我遇到麻烦.Limit(跳过行)函数在SQL.In声明来解决这个要求对于大数据集的性能的子表。
var q = db.From<Item>().Limit(skip, rows);
items = db.Select<Item>(q);
q = q.Select(a => a.ITEM_NO);
itemDetails = db.Select<ItemDetail>(x => Sql.In(x.ITEM_NO, q));
它工作在第一选择限制的结果时,但在子数据中使用时拉我得到“只有一个表达式可以在选择列表中指定时不引入子查询与存在。”
散发出来改变其中子查询的SQL:
WHERE "ITEM_NO" IN (SELECT * FROM (SELECT "ITEM_NO", ROW_NUMBER() OVER
(ORDER BY "ITEM"."ITEM_NO") As RowNum
FROM "ITEM") AS RowConstrainedResult WHERE RowNum > 5 AND RowNum <= 15)
我理解的SQL错误是因为我IN子句中选择多个列。有没有更好的方式来写这个来避免错误?
感谢
我们仍然有尚未升级到2008 R2以上的旧用户。 – Mark