賦值運算符。使運算符左側的使用者變數採用其右側的值。右側的值可以是文字值、儲存值的另一個變數,或產生純量值的任何合法表達式,包括查詢的結果(前提是該值為純量值)。您可以在同一個
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 節,「子查詢」。