如何在分组时查找行数

时间:2013-12-17 14:26:59

标签: c# mysql

我想检索用条件分组的行数,以控制显示的行数。使用主键没有问题我得到计数​​(*)但是在其他字段的情况下,例如date,nom,其中有很多行具有相同的名称和日期,我找到了一种原始的方法来查找将会有多少行显示如下:

    public static int GetRapportPgeNbr(string Qry, int param)
    {
        int counter = 0;
        int result = 0;
        using (MySqlConnection conn = new MySqlConnection(PublicVariables.cs))
        {
            using (MySqlCommand cmd = new MySqlCommand(Qry,conn))
            {
                conn.Open();
                 MySqlDataReader reader = cmd.ExecuteReader();
                 try
                 {
                     while (reader.Read())
                     {
                         result = result + Convert.ToInt16(reader["rows"]);
                         ++counter;
                     }
                 }
                 catch(MySqlException e)
                 {
                     MessageBox.Show(e.Number.ToString() + " -> " + e.Message.ToString());
                     return result;
                 }
             }
        }
        if (param == 1)
            return counter;
        else 
            return result;
    }

param变量指导我得到行的总和(有时有2个或更多表带有union)或计数器。

Sqlfiddle

在这个例子中,我有5行,但我只需要4行,所以我得到了计数器的结果。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找COUNT(DISTINCT nom)并删除GROUP BY以获取总数:

SELECT COUNT(DISTINCT nom) AS rows 
FROM ProdMacaron 

这将给你4而不是5。

但是,您可以添加GROUP BY nom,但对于COUNT(DISTINCT nom)这个will give you ones,对于表格中的任何值,这都是无用的。