0

複数のプロセスを同時に実行するので、ここで実行しようとしたのは、1000行をフェッチしてから、選択した行を更新することです。以下は、接続を閉じた直後に更新関数を呼び出すことを示す選択関数と更新関数です。選択機能で

    public List<string> Select()
    {
        string set;
        string query = "SELECT * FROM master WHERE attempted='0' LIMIT 1000";
        List<string> list = new List<string>();
        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            MySqlDataReader dataReader = cmd.ExecuteReader();
            while (list.Count() < 1000)
            {
                dataReader.Read();
                string email = dataReader["email"].ToString();              
                var m = dataReader["attempted"];
                if (m.ToString() == "0")
                {
                    list.Add(email);

                }                  
            }
            dataReader.Close();
            this.CloseConnection();
            Update();
            return list;
        }
        else
        {
            return list;
        }
    }





    public void Update()
    {
        if (this.OpenConnection() == true)
        {
                string query = "UPDATE master SET attempted='1' WHERE ( SELECT * FROM master WHERE attempted='0' LIMIT 1000 )";              
                MySqlCommand cmd = new MySqlCommand(query, connection);
                cmd.CommandText = query;
                cmd.ExecuteNonQuery();
            this.CloseConnection();
        }
    }

オペランドを取得している例外には、1つの列が含まれている必要があります。

私は何が間違っているのですか?

4

1 に答える 1

0

別の列やテーブルを作成できないのはなぜですか? 次に、値を変更する SQL レベルまたはプロシージャで基本的なクエリを記述しますか? その後、他のアプリケーションは列またはテーブルの値をテストできます。

例:

UPDATE [dbo].[Customer]
SET [GotEmail] = 1
WHERE (
       SELECT [Email]
       FROM [dbo].[Customer]
       );

それとも、そのような基本的なものですか?別の例は次のとおりです。

UPDATE accounts 
SET (contact_last_name, contact_first_name) = 
    (SELECT last_name, first_name FROM salesmen
WHERE salesmen.id = accounts.sales_id);

そのような単純なクエリでは問題は解決しませんか?

私の反応が明確でない場合... 私は自分の思考プロセスを明確にしようとします。

于 2013-01-17T23:21:04.733 に答える