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