2 つのサブクエリの結合である Entity 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 列が 'A % value % with % multiple % wildcards'」のようにする必要がある場合です。
ランク欄には問題ないと思います。ユニオンオールで結合された2つの異なるesqlステートメントにオーダーバイを適用しようとしている方法だと思います。誰かが提案できますか:
- この種の UNION/UNION ALL ステートメントに ORDER BY を適用する方法
- 非実体列式による順序付け方法。
ありがとう。