我正试图在“位置”列中找到最小值。这是我的代码:
public void minrank()
{
SqlConnection con1 = new SqlConnection(DecryptString(System.Configuration.ConfigurationManager.AppSettings["cn"], EncryptionKey2));
con1.Open();
string str1 = "select EmailAcmd5hash,eviewdate,MIN(eposition) from rankdata where EmailAcmd5hash=@EmailAcmd5hash and eviewdate=@eviewdate";
SqlCommand cmd1 = new SqlCommand(str1, con1);
cmd1.Parameters.AddWithValue("@EmailAcmd5hash", Request.Cookies["li"]["Ac"].ToString());
cmd1.Parameters.AddWithValue("@eviewdate", DateTime.Now.ToString("dd-MM-yyyy"));
SqlDataReader reader1 = cmd1.ExecuteReader();
if (reader1.HasRows)
{
topminranklbl.Text = (reader1["eposition"].ToString());
}
}
我收到这个错误:
列'rankdata.EmailAcmd5hash'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
请帮我解决这个问题。提前致谢。
将查询更改为
select MIN(eposition) as eposition
from rankdata
where EmailAcmd5hash=@EmailAcmd5hash and eviewdate=@eviewdate
您应该将EmailAcmd5hash和eviewdate列添加到分组依据
string str1 = "select EmailAcmd5hash,eviewdate,MIN(eposition) eposition from rankdata where EmailAcmd5hash=@EmailAcmd5hash and eviewdate=@eviewdate group by EmailAcmd5hash,eviewdate";
或从选择中删除
string str1 = "select MIN(eposition) eposition from rankdata where EmailAcmd5hash=@EmailAcmd5hash and eviewdate=@eviewdate";
只需参考参数
string str1 = "select @EmailAcmd5hash, @eviewdate, MIN(eposition) from rankdata where EmailAcmd5hash = @EmailAcmd5hash and eviewdate = @eviewdate";