日期:2014-05-16  浏览次数:21159 次

SQL多条件判断取值
如图是我的数据库,主键是warntime,name可以相同。现在要取到meter1最新的value,就是这个warntime最大对应的name的value。试了好多还是不行啊,只有第一句可以,但第一句是不管插入是是不是meter1他都会更新数据。求解~

//根据warnime的最大值来取值
                    myCommand.CommandText = "SELECT * FROM  warnTable  WHERE warntime=(SELECT MAX(warntime) FROM  warnTable )";
                    //myCommand.CommandText = "SELECT value, MAX(warntime) FROM warnTable WHERE NAME = '" + name + "' group by value";
                    //myCommand.CommandText = "SELECT top 1 value FROM warnTable WHERE NAME = '" + name + "' ORDER BY warntime desc";
                    //判断是否查找成功
                    MySqlDataReader getValue = myCommand.ExecuteReader();
                    if (getValue.Read())
                    {
                        dataValue = Convert.ToInt32(getValue["value"].ToString().Trim());
                    }

------解决方案--------------------
引用:
Quote: 引用:


Select Top 1 Value Where name = 'meter1' Order By warntime desc

这句我早就试过了 语法上意思上都是对的 可就是执行错误 
public int GetDataTime(string name)
        {
            int dataValue = 0;
            MySqlConnection myConnection = new MySqlConnection();
            myConnection.ConnectionString = ContString;

            try
            {
                myConnection.Open();
                MySqlCommand myCommand = myConnection.CreateCommand();
                if (name != null)
                {
                    //根据warnime的最大值来取值