首頁 >資料庫 >mysql教程 >如何正確使用MySQL SELECT語句中的變數?

如何正確使用MySQL SELECT語句中的變數?

DDD
DDD原創
2024-12-16 14:13:09933瀏覽

How Can I Correctly Use Variables Within a MySQL SELECT Statement?

在SELECT 語句中使用變數

使用MySQL 時,您可能會遇到想要在同一個SELECT 中定義和使用變數的情況陳述。但是,了解所涉及的限制非常重要。

變數賦值和可讀性

根據 MySQL 文檔,通常不建議為變數賦值使用者變數並在同一語句中讀取它。涉及使用者變數的表達式的求值順序未定義,並且可能會根據語句的元素而有所不同。

這表示以下查詢可能不會如預期執行:

SELECT
    @z:=SUM(item),
    2*@z
FROM
    TableA;

在這種情況下,您可能會在第二列中獲得 NULL。

為什麼與過程?

您可能想知道為什麼以下使用預存程序而不是用戶變量的查詢能夠按預期工作:

SELECT
    @z:=someProcedure(item),
    2*@z
FROM
    TableA;

這樣做的原因是存儲過程的評估方式與用戶變數不同。預存程序的求值順序已定義且一致。

使用子查詢

要實現所需的功能,可以使用子查詢:

select @z, @z*2
from (SELECT @z:=sum(item)
      FROM TableA
     ) t;

此方法使用子查詢來初始化用戶變數(@z),然後在主查詢中引用它。

以上是如何正確使用MySQL SELECT語句中的變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn