mysql的使用者變數

來源:互聯網
上載者:User
mysql|變數 我覺得很悲哀,為什麼看的人多,說的人少呢。
是覺得太簡單而不屑一顧呢?還是想留一小手呢?

問題的提出 id=2131117
有一個表,內容如下
id  name
1   aaa
4   bbb
6   ccc
14   a1
15   a2
26   b1
怎樣做才能得到如下結果
id name p
1 aaa  1
4 bbb  2
6 ccc  3
14 a1   4
15 a2   5
26 b1   6
又怎樣做,才能這樣?
name        p
aaa aaa
bbb aaa bbb
ccc aaa bbb ccc
a1  aaa bbb ccc a1
a2  aaa bbb ccc a1 a2
b1  aaa bbb ccc a1 a2 b1

MySQL支援線程特定的變數,用@variablename句法。一個變數名可以由當前字元集的數字字母字元和“_”、“$”和“.”組成。預設字元集是ISO-8859-1 Latin1;這可以通過重新編譯MySQL改變。
變數不必被初始化。預設地,他們包含NULL並能儲存整數、實數或一個字串值。當線程退出時,對於一個線程的所有變數自動地被釋放。

你可以用SET句法設定一個變數:

SET @variable= { integer expression | real expression | string expression }
[,@variable= ...].

你也可以用@variable:=expr句法在一個運算式中設定一個變數:

select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
+----------------------+------+------+------+
| @t1:=(@t2:=1)+@t3:=4 | @t1  | @t2  | @t3  |
+----------------------+------+------+------+
|                    5 |    5 |    1 |    4 |
+----------------------+------+------+------+

問題的解決:
1、
$rs = mysql_query("set @t=0");
$rs = mysql_query("SELECT id,name,@t:=@t+1 as p FROM tbl_name");
mysql_result_all($rs);

2、
$rs = mysql_query("set @t=''");
$rs = mysql_query("SELECT name,@t:=concat(@t,' ',name) as p FROM tbl_name");
mysql_result_all($rs);



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。