0

データベースに列 Type があります。タイプ A のすべての行とタイプ B の最初の N 行のみを取得したいのですが、どちらも DateCreated でソートされています。これを行うための単一のクエリを作成できますか? どんなポインタも役に立ちます。

4

3 に答える 3

3
   SELECT *
     FROM tbl
    WHERE TYPE='A'
UNION ALL
   SELECT *
     FROM (
          SELECT TOP(N) *
            FROM tbl
           WHERE TYPE='B'
        ORDER BY DateCreated
      ) X
 ORDER BY DateCreated
于 2012-10-02T19:06:59.683 に答える
2

これは、次のような構造を持つ 1 つのテーブルからのものであると仮定します。

[type] [nchar](10) NULL,
[date] [smalldatetime] NULL,
[id] [int] IDENTITY(1,1) NOT NULL

(select * from [TableName] where [TableName].[type]='t1') 
union 
(select TOP 2* from [TableName]  where [TableName].[type]='t2') 
order by [date]desc

('TOP2' を 2 番目のタイプからの必要な結果に置き換えます)

于 2012-10-02T19:07:59.967 に答える
1

LINQ では:

db
    .Where(x => x.Type == "A")
    .Union(db
        .Where(x => x.Type == "B")
        .OrderBy(x => x.SomeField)
        .Take(N));
    .OrderBy(x => x.DateCreated);
于 2012-10-03T12:52:02.487 に答える