【问题标题】:Why it don't fetch DISTINCT category from database为什么它不从数据库中获取 DISTINCT 类别
【发布时间】:2015-07-14 06:25:17
【问题描述】:

我有一个包含 id 和 Category 列的表。我只想从数据库中获取 DISTINCT 类别,但它无法按预期进行。它为我提供了表中所有类别的输出。

我有这段代码:

var selectUniqueCategory="SELECT DISTINCT(Category),id FROM images";
var SelectedUniqueCat=db.Query(selectUniqueCategory,category,id);




@foreach(var row in SelectedUniqueCat)
{
                <p><a href="#" data-target="#row_thumbnails">@row.Category </a>
                   <a href="/EditCategory?id=@row.id">&nbsp;<span class="glyphicon glyphicon-pencil"></span></a>
                 </p>
}

在每个循环中我想执行两个任务:

1:从表中获取 DISTINCT 类别

2:获取 id 列并将与该类别相关的每个 id 传递给 id=@row.id

如果我从查询中删除 id,例如:

var selectUniqueCategory="SELECT DISTINCT(Category) FROM images";
var SelectedUniqueCat=db.Query(selectUniqueCategory,category);

从表中获取 DISTINCT 类别效果很好,但我想同时获取类别作为 DISTINCT 和 id 作为表中的主要。

【问题讨论】:

  • 是否要一次选择与该类别相关的所有 id?
  • 发布您的表的一些示例输入\输出数据。
  • 是的,我想一次性获取所有内容

标签: asp.net webmatrix


【解决方案1】:
 Hi everyone,
    I have found solution to my problem now i felt it should be share here also.

    as earlier to my question i said i want category and associated id with that simultaneously. following code did work for me.

var SelectQuery="SELECT * FROM images";
                      var selectedData=db.Query(SelectQuery,category,imagePath);

                      var selectUniqueCategory="SELECT DISTINCT Category FROM images ORDER BY Category";
                      var SelectedUniqueCat=db.Query(selectUniqueCategory,category);

<a href="/EditCategory?id=@{foreach( var SendId in selectedData )
                                           {
                                               if(row.Category==SendId.Category)
                                               {
                                                   @SendId.id
                                               }
                                           }}" >&nbsp<span class="glyphicon glyphicon-pencil"></span></a></p>
              }
它对我有用。 谢谢

【讨论】:

    【解决方案2】:

    您应该按类别分组并取 max id 的最大值:

    SELECT Category,max(id) as idmax , min(id) as idmin FROM images GROUP BY Category
    

    【讨论】:

    • 那么现在查询返回最高的id和最低的?他要求这个吗?
    • 如果我按照你说的那样去做,我会遇到这个错误:System.InvalidOperationException:列名“id”无效。在  
    • 如果你使用这个查询,你有以下字段:idmax & idmin。
    • 不,我不想要任何有最小值或最大值的东西。我也希望 DISTINCT 类别在该查询中也只有 id 库尔姆
    • 显示使用一些示例输入和您想要的输出。
    【解决方案3】:

    您可以在 Category 列上使用 GROUP BY 并省略 DISTINCT,这只会显示第一个找到的类别的 id。

    SELECT Category,id FROM images GROUP BY Category
    

    【讨论】:

    • 这不行,id应该在一个最小/最大函数中
    • 如果我同意你的想法,我会遇到这个错误:在聚合和分组表达式中,SELECT 子句只能包含聚合和分组表达式。 [ 选择子句 = ,id ]
    • 你使用哪个数据库 MS SQL ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多