我想检索用条件分组的行数,以控制显示的行数。使用主键没有问题我得到计数(*)但是在其他字段的情况下,例如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)或计数器。
在这个例子中,我有5行,但我只需要4行,所以我得到了计数器的结果。
有更好的方法吗?
答案 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,对于表格中的任何值,这都是无用的。