我正在尝试创建一个实体 SQL,它是两个子查询的联合。
(SELECT VALUE DISTINCT ROW(e.ColumnA, e.ColumnB, 1 AS Rank) FROM Context.Entity AS E WHERE ...)
UNION ALL
(SELECT VALUE DISTINCT ROW(e.ColumnA, e.ColumnB, 2 AS Rank) FROM Context.Entity AS E WHERE ...)
ORDER BY *??* LIMIT 50
我努力了:
ORDER BY Rank
和
ORDER BY e.Rank
但我不断得到:
System.Data.EntitySqlException: The query syntax is not valid. Near keyword 'ORDER'
编辑:
这是实体框架。在 C# 中,使用以下命令执行查询:
var esql = "...";
ObjectParameter parameter0 = new ObjectParameter("p0", value1);
ObjectParameter parameter1 = new ObjectParameter("p1", value2);
ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql, parameter0, parameter1);
var queryResults = query.Execute(MergeOption.NoTracking);
我的应用程序中只有一小部分需要使用 Entity SQL。一般来说,主要用例是当我需要做的时候:“WHERE Column LIKE 'A % value % with % multiple % wildcards'”。
我不认为这是 Rank 列的问题。我确实认为这就是我试图将 order by 应用于由 union all 连接的两个不同的 esql 语句的方式。有人可以建议:
- 如何将 ORDER BY 应用于这种 UNION/UNION ALL 语句
- 如何按非实体列表达式排序。
谢谢。