1

我想SELECT通过将 a 添加到结果中来计算特定表中的所有数据,countField该结果计算相应值Item.ResourceId在所有结果中存在的次数。

SELECT Name, ResourceId, (SELECT COUNT(ResourceId) FROM Item GROUP BY ResourceId) AS foo
FROM Item

关于如何做到这一点的任何想法?

4

3 回答 3

2

如果这是您想要的查询

SELECT Name, ResourceId, COUNT(*) FROM Item GROUP BY Name, ResourceId;

它按如下方式转换为 LINQ。

var result = items.GroupBy(item => new { item.Name, item.ResourceId })
                  .Select(group => new { group.Key.Name, group.Key.ResourceId, Count = group.Count() })
                  .ToList();

或者你想要这个查询?

SELECT Name,
       ResourceId,
       (SELECT COUNT(*) FROM Item y WHERE y.ResourceId = x.ResourceId)
FROM
       Item x;

这将转换为以下 LINQ 表达式。

var result = items.Select(item => new
             {
                 item.Name,
                 item.ResourceId,
                 Count = items.Count(x => x.ResourceId == item.ResourceId)
             }).ToList();

给定以下输入

Name   ResourceId
-----------------
 A      1
 A      1
 B      1
 B      2
 B      2
 C      3

第一个查询产生

Name   ResourceId   Count
-------------------------
 A      1            2
 B      1            1
 B      2            2
 C      3            1

而第二个查询产生了这个。

Name   ResourceId   Count
-------------------------
 A      1            3
 A      1            3
 B      1            3
 B      2            2
 B      2            2
 C      3            1
于 2013-01-09T18:09:57.480 回答
0

这行得通吗?

SELECT resourceId, count(resourceId) FROM Item GROUP BY resourceId

于 2013-01-09T17:24:45.370 回答
0

SELECT Name, ResourceId, ResourceIdCount FROM Item i INNER JOIN (SELECT ResourceId, COUNT(ResourceId) AS ResourceIdCount FROM Item GROUP BY ResourceId) ic ON i.ResourceId = ic.ResourceId

于 2013-01-09T18:18:06.653 回答