“如果没有GROUP BY子句,混合GROUP列..​​没有GROUP列是非法的”

时间:2014-09-12 08:17:04

标签: mysql sql

我正在使用C#在Visual Studio 2012上开发一个软件。我使用MySQL Connector 6.9.1进行MySQL连接。我的软件在我的操作系统(Win8 x64)上运行顺畅,但它不适用于Win7(在VMWare上,我必须在Win7上试用)

throw是抛出这个例外:

  

MySql.Data.MySqlClient.MySqlException(0x80004005):如果没有GROUP BY子句,混合GROUP列(MIN(),MAX(),COUNT(),...)没有GROUP列是非法的

这是我的代码:

      MySqlCommand komut = new MySqlCommand();
        komut.Connection = baglan;
        komut.CommandType = CommandType.Text;
        komut.CommandText = "SELECT count(*),yetki FROM kullanicilar WHERE kadi=@kadi AND sifre=@sifre";
        komut.Parameters.AddWithValue("@kadi", txtKadi.Text);
        komut.Parameters.AddWithValue("@sifre", txtSifre.Text);
        MySqlDataReader oku = komut.ExecuteReader();
        oku.Read();
        if (oku.GetInt32(0) > 0)
        {

            if (oku.GetString("yetki") == "0")
            {
                MessageBox.Show("Hesabınız aktif değil.","Hesap Deaktif",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
                baglan.Close();
                return;
            }

            RandevulariYonet randPenc = new RandevulariYonet(txtKadi.Text, this);
            this.Hide();
            randPenc.ShowDialog();

        }
        else
        {
            MessageBox.Show("Giriş Başarsız", "Giriş Başarısız", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        }

1 个答案:

答案 0 :(得分:1)

问题出在SQL语句中:

SELECT count(*),yetki 
FROM kullanicilar 
WHERE kadi=@kadi AND sifre=@sifre

您使用count(*)和另一列,而不对其进行分组。它应该是这样的:

SELECT count(*),yetki 
FROM kullanicilar 
WHERE kadi=@kadi AND sifre=@sifre 
GROUP BY yetki