私はこのテーブルを持っていますTest { Id:int, data:string }
- 2列とn行のテーブルです。
事実:
- IDは一意です(アイテムが追加された順序について何かを伝えます)
- データは重複する可能性があります
- アイテムがデータによってグループ化されている場合、すべての ID は連続しています
LINQでは、次のようなことをします:
class Row
{
public int Id { get; set; }
public string Data { get; set; }
}
public static class MyTestClass
{
public static void Test()
{
IEnumerable<Row> rows = new List<Row>
{
new Row { Id = 1, Data = "42"},
new Row { Id = 2, Data = "42"},
new Row { Id = 3, Data = "11"},
new Row { Id = 4, Data = "11"},
new Row { Id = 5, Data = "11"},
new Row { Id = 6, Data = "65"},
};
var result = rows.GroupBy(r => r.Data)
.OrderByDescending(g => g.First().Id)
.Select(g => g.Key)
.ToList();
var str = string.Join(" ", result);
Console.WriteLine(str);
}
}
これは印刷されます:
65
11
42
これを SQL (MS SQL 用) で効率的に記述するにはどうすればよいですか? 私はさまざまな解決策を試してきましたが"SELECT DISTINCT Data, Id FROM Test ORDER BY Id DESC"
、これは明らかに両方の列に基づいて異なるものを返します-これは明らかに私が望むものではありません:)