【问题标题】:How to get MAX value from a database table in c# with where clause [closed]如何在 C# 中使用 where 子句从数据库表中获取 MAX 值[关闭]
【发布时间】:2021-06-24 16:09:48
【问题描述】:

我正在尝试从数据库表中获取行数据到标签,条件是我希望最高值列显示在标签中,其他字段目前我的代码是:

 private void electionWinner()
        {
           
            try
            {
                conn.Open();
                string qry = "SELECT * FROM Results WHERE (SELECT MAX(Results) FROM Results) ";
                SqlCommand cmd = new SqlCommand(qry,conn);
                string result = cmd.ExecuteReader().ToString();
                winnerlbl.Text = result.ToString();

            }
            catch (SqlException es)
            {

                MessageBox.Show($"{es}");
            }

        }
    }

我目前是 c# 的新手并试图理解它,所以我迷路了,在此先感谢。

【问题讨论】:

  • 您忘记补充说您也是 SQL 新手。你用的是什么数据库? (请为此添加正确的 [tag]。)
  • 使用的数据库是mysql
  • stackoverflow.com/questions/15946089/… 之前检查一下,它将帮助您提高 SQl Max
  • 我怀疑你正在同时使用 MySql 数据库和 Sql Server 的类。
  • 如果您的数据库是 mysql,那么您使用了错误的提供程序。 SqlCommand 等是针对 microsoft sql server 的。还要看看如何使用阅读器,不能简单的 ToString 结果

标签: c# mysql sql


【解决方案1】:

查询本身不正确。原因如下:

  1. 您没有说明您想要结果表中的哪一列 最大值

  2. 当你调整 where 子句中的 select 语句时,你需要确保你的 WHERE 语句会给你一个真或假,目前它所做的只是获取最大值(如果你正确添加了列名)

    select * from Results where COLUMNNAME= (select Max(COLUMNNAME) from Results)

始终确保在您的代码中执行查询之前先在数据库上运行查询

【讨论】:

    【解决方案2】:

    使用ORDER BYLIMIT

    SELECT r.*
    FROM Results r
    ORDER BY r.Results DESC
    LIMIT 1;
    

    【讨论】:

      【解决方案3】:

      您可以像下面这样修改您的查询

                   `string qry = "Select ColumnName From Results where  ColumnName in (SELECT Max(ColumnName) FROM Results)";`
                  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-15
        • 2014-02-09
        • 2021-03-08
        • 2020-11-17
        • 1970-01-01
        • 1970-01-01
        • 2013-05-05
        相关资源
        最近更新 更多