賦值運算符。使運算符左側的使用者變數採用其右側的值。右側的值可以是文字值、儲存值的另一個變數,或產生純量值的任何合法表達式,包括查詢的結果(前提是該值為純量值)。您可以在同一個
SET陳述式中執行多個賦值。您可以在同一個陳述式中執行多個賦值。與
=不同,:=運算符永遠不會被解讀為比較運算符。這表示您可以在任何有效的 SQL 陳述式(而不僅限於SET陳述式)中使用:=為變數賦值。mysql> SELECT @var1, @var2; -> NULL, NULL mysql> SELECT @var1 := 1, @var2; -> 1, NULL mysql> SELECT @var1, @var2; -> 1, NULL mysql> SELECT @var1, @var2 := @var1; -> 1, 1 mysql> SELECT @var1, @var2; -> 1, 1 mysql> SELECT @var1:=COUNT(*) FROM t1; -> 4 mysql> SELECT @var1; -> 4您可以在除了
SELECT以外的其他陳述式(例如UPDATE)中使用:=進行值賦值,如下所示mysql> SELECT @var1; -> 4 mysql> SELECT * FROM t1; -> 1, 3, 5, 7 mysql> UPDATE t1 SET c1 = 2 WHERE c1 = @var1:= 1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT @var1; -> 1 mysql> SELECT * FROM t1; -> 2, 3, 5, 7雖然也可以在單一 SQL 陳述式中使用
:=運算符同時設定和讀取同一個變數的值,但不建議這樣做。第 11.4 節,「使用者定義變數」解釋了為什麼您應該避免這樣做。此運算符用於在兩種情況下執行值賦值,這兩種情況在接下來的兩段中說明。
在
SET陳述式中,=被視為賦值運算符,使運算符左側的使用者變數採用其右側的值。(換句話說,當在SET陳述式中使用時,=的處理方式與:=相同。)右側的值可以是文字值、儲存值的另一個變數,或產生純量值的任何合法表達式,包括查詢的結果(前提是該值為純量值)。您可以在同一個SET陳述式中執行多個賦值。在
UPDATE陳述式的SET子句中,=也充當賦值運算符;但在這種情況下,它會使運算符左側命名的欄採用右側給定的值,前提是符合任何屬於UPDATE的WHERE條件。您可以在同一個UPDATE陳述式的SET子句中進行多個賦值。在任何其他情況下,
=都會被視為比較運算符。mysql> SELECT @var1, @var2; -> NULL, NULL mysql> SELECT @var1 := 1, @var2; -> 1, NULL mysql> SELECT @var1, @var2; -> 1, NULL mysql> SELECT @var1, @var2 := @var1; -> 1, 1 mysql> SELECT @var1, @var2; -> 1, 1如需更多資訊,請參閱第 15.7.6.1 節,「變數賦值的 SET 語法」、第 15.2.17 節,「UPDATE 陳述式」和第 15.2.15 節,「子查詢」。