sql >> データベース >  >> RDS >> Mysql

MySQLパステーブル名をカーソル選択

    私はあなたがこのようにそれをすることはできないと信じています。

    これを実現するには、動的SQLを使用する必要があります。

    動的SQLを使用してカーソルを開くこともできないことに注意してください。しかし、あなたの場合、カーソルは必要ないようです。

    コードを正しく理解していれば、ユーザー変数を使用するだけで、動的に準備された2つのステートメントを使用して実行しようとしていることを実現できます。

      SET @stmt_text=CONCAT("SELECT @score = SUM(`score`), @maxscore=SUM(`maxscore`) FROM ",                
                             answertable, "WHERE `idParticipation`= ",  partid);
      PREPARE stmt FROM @stmt_text;
      EXECUTE stmt USING @a;
    

    次に、以下のステートメントを使用して値を更新します

      SET @stmt_text=CONCAT("UPDATE", participationtable, " SET `score`[email protected],  
                          `maxscore`[email protected] WHERE `idParticipation`=", partid);
    
      PREPARE stmt FROM @stmt_text;
      EXECUTE stmt USING @a;
    
      DEALLOCATE PREPARE stmt;
    

    注:構文を確認してください。正確に検証するためにテストすることはできませんが、アイデアが得られることを願っています。




    1. CodeIgniterでのデータベースエラー処理の問題

    2. MySQLでテーブルを切り捨てる方法

    3. HQLクエリでNULLまたは無効を確認する方法

    4. MySQLJOINクエリでnullの結果を無視する