@var,全域變數:@@var(多為系統預定義)。DECLARE @num INT;SET @num = 1; 或 SELECT @num = col FROM tbl WHERE ...@var(用戶變數,會話級作用域)。SET @num = 1; 或 SET @num := 1;SELECT @num := 1; 或 SELECT @num := col FROM tbl WHERE ...SELECT 賦值必須用 :=,否則會被解析為比較運算子;SET 可用 = 或 :=。| 操作 | SQL Server | MySQL |
|---|---|---|
| 宣告並賦值 | DECLARE @a INT; SET @a=1; | SET @a=1; (隱式宣告) |
| 查詢結果賦值 | SELECT @a=col FROM t; | SELECT @a:=col FROM t; |
| 多變數賦值 | SELECT @a=col1, @b=col2 FROM t; | SELECT @a:=col1, @b:=col2 FROM t; |
MySQL 用戶變數可跨陳述式保持值,常用於模擬序號、累加計算等:
SET @rownum := 0;
SELECT @rownum := @rownum + 1 AS rownum, col1 FROM table;