mysql 用戶變量

mysql 用戶變量 用來存儲中間結果(查詢結果),以便於該結果在後續語句中的使用。
首先來看一個鎖定:

mysql> LOCK TABLES projects READ, temp WRITE;
mysql> SELECT sum(typeid) as sum FROM projects WHERE user_id = 100;

這裏寫圖片描述

mysql> UPDATE temp SET total = 14850 WHERE user_id = 100;
mysql> UNLOCK TABLES;

在這個過程中,需要記住第一次的查詢結果,在進行UPDATE語句中的相應修改。若在PHP中,則可使用mysql_fetch_array()檢索SELECT語句產生的數據行,將值存在PHP變量中在執行UPDATE語句,並在WHERE子句中包含PHP 變量的值。
還有一種更快捷的辦法,將數據存儲在MySQL用戶變量中。MySQL用戶變量可以直接存儲連接結果,不必將結果傳至Web服務器。之前的例子可以進行如下改寫

mysql> LOCK TABLES projects READ, temp WRITE;
mysql> SELECT @total:=sum(price)  FROM projects WHERE user_id = 100;

這裏寫圖片描述

mysql> UPDATE temp SET total = @total WHERE user_id = 100;
mysql> UNLOCK TABLES;

mysql 用戶變量以@字符爲前綴,賦值運算符是:=。本例中,SELECT語句的結果存在MySQL的變量@total中,在UPDATE語句中,變量@total的值賦給字段total。

注:

  • mysql 用戶變量只對同一個數據庫的連接有效,連接關閉時隨即消失
  • mysql 用戶變量只能包含字母、數字、字符、下劃線、$、句點。
  • 通常只在一個語句中給變量賦值,並在另一個語句中使用該變量時纔有效,爲避免bug,一般不在同一語句中賦值並使用變量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章