Updateステートメントの実行中に変数を設定するにはどうすればよいですか?構文がわからないようです。
だから私はこのようなものが欲しいのですが、構文が間違っていると言っています:
SET @tempVariable := 0;
UPDATE myTable SET col1 = 5, col2 = @tempVariable, @tempVariable := 100;
これは可能です:-
UPDATE myTable SET col1 = 5,
col2 = (@tempVariable:=@tempVariable+1) // to increment
整数を設定するには(増分ではない)
UPDATE myTable SET col1 = 5,
col2 = (@tempVariable:=100) // to assign any integer
このようなものを取得したい場合:
SET @tempVariable := 0; UPDATE myTable SET col1 = 5, col2 = @tempVariable, @tempVariable := 100;
あなたはこのようなトリックを行うことができます:
ALTER TABLE Proj ADD col3 numeric;
SET @tempVariable := 0; UPDATE myTable SET col1 = 5, col2 = @tempVariable, col3 = @tempVariable := 100;
ALTER TABLE Proj DROP col3;
このようにして、テーブルの属性を変更せずに値を変数に割り当てることができます。動的な値を設定する場合に非常に便利です。
例えば: @tempVariable := @otherVariable + 100;
キーは ":="演算子です。 MySQLユーザー変数
SET以外のステートメントで、ユーザー変数に値を割り当てることもできます。この場合、代入演算子は=ではなく:=でなければなりません。後者は非SETステートメントでは比較演算子=として扱われるためです。
1更新列のいずれかを使用
SET @tempVariable := 0;
UPDATE myTable
SET col1 = 5,
col2 = @tempVariable := 100,
col3 = @tempVariable := col2 + 1;
@ tempVariableは常に100で、col3は常に101です。mySQLはテーブル内の元の値ではなく、新しく割り当てられた値を使用するようです。これはMS SQLとは異なります。より明確にするために、次の例を試してください。col3および@tempVariableの値は1001になります。
UPDATE myTable
SET col1 = 5,
col2 = @tempVariable := 100,
col2 = 1000
col3 = @tempVariable := col2 + 1;
2テーブルの更新列以外の列を使用します。
UPDATE myTable
SET col1 = 5,
col2 = @tempVariable := 100,
col3 = @tempVariable := col4 + 1;
@tempVariableとcol3は同じ値になります。それらは、col4の元の値+ 1になります。
私は選択を使用して同様のクエリをテストしましたが、それは私にとってはうまくいったので、次のようにクエリを書き換えます
SET @tempVariable := 0;
UPDATE myTable SET col1 = 5, col2 = (SELECT @tempVariable + 100);
お役に立てば幸いです。
私はこのようなことをするためにphpまたはcoldfusionを使用しました(phpの例)
function something($param){
$localVarCleaned = mysql_real_escape_string($param);
mysql_query("
UPDATE tablename
SET col = ".$localVarCleaned."
");
}