3

我正在尝试创建一个实体 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 语句的方式。有人可以建议:

  1. 如何将 ORDER BY 应用于这种 UNION/UNION ALL 语句
  2. 如何按非实体列表达式排序。

谢谢。

4

0 回答 0