如何在sql数据库中显示超过3次的列数据而不重复

时间:2013-07-30 06:26:37

标签: c# asp.net sql

我有一个名为memberreport的表,其中成员可以发送多个报告。但是,我正在尝试检查已提交超过3份报告的成员。

每个memberaccount都有一个唯一的属性,即memberID。所有成员报告都需要一个成员帐户(包含memberID)才能报告。

从下面的SQL代码中可以看到

SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI");
            con.Open();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("Select distinct memberID from MemberReport where memberID >= 3", con);
            da.Fill(ds);
            ddlNRIC.DataSource = ds;
            ddlNRIC.DataTextField = "memberID";
            ddlNRIC.DataValueField = "memberID";
            ddlNRIC.DataBind();
            con.Close();

我正在尝试显示已提交超过3份报告的memberID。但是,我从Visual Studio

收到此错误
Conversion failed when converting the varchar value 'Q12345T' to data type int.

数字和字母'Q12345T'是memberID。我的属性为varchar。但我插入了这行代码

memberID >= 3

应该能够显示已提交超过3个报告的memberID没有工作。我正在尝试显示在下拉列表中提交了3个以上报告的memberID。我添加了一个独特的,应该能够防止重复的memberID。

2 个答案:

答案 0 :(得分:3)

  
    

从MemberReport中选择不同的memberID,其中memberID> = 3

  

你的成员id是sql server中的varchar(xx)是错误

在memberID上使用group by子句,你的条件应该在count> = 3而不是在memberID上。

select memberID from MemberReport
group by memberID
having (count(memberID) >= 3)

答案 1 :(得分:1)

where检查列的值,而不是该列在表中出现的次数。对于此类任务,您需要having子句:

select memberID from MemberReport
group by memberID
having (count(memberID) >= 3)