首頁 > 資料庫 > mysql教程 > 為什麼在單一 SQL SELECT 語句中使用變數經常傳回意外結果?

為什麼在單一 SQL SELECT 語句中使用變數經常傳回意外結果?

DDD
發布: 2024-12-20 22:29:13
原創
302 人瀏覽過

Why Does Using Variables in a Single SQL SELECT Statement Often Return Unexpected Results?

在SELECT 語句中宣告並使用變數

在SQL 中,為變數賦值並在相同查詢中擷取該值可以具有挑戰性。考慮以下範例:

此查詢嘗試計算「item」列的總和並將其儲存在名為「@z」的變數中。然後它將“@z”的值乘以 2。然而,令人驚訝的是,第二列總是傳回 NULL。

出現這種情況是因為 MySQL 的文件明確指出將值指派給使用者變數並在不應依賴相同聲明。此類表達式的求值順序未定義,並且可能會在未來版本中發生變更。

為了進一步說明這一點,請考慮替代查詢:

在此查詢中,「@z」是透過過程呼叫分配一個值。在這種情況下,查詢按預期工作,因為過程呼叫是與變數分配分開評估的。

要克服使用者變數的限制,您可以利用子查詢來分配值並在主查詢中檢索它查詢:

在此子查詢中,使用SELECT 指派「@ z”的值。然後主查詢選擇“@z”並執行必要的計算。

以上是為什麼在單一 SQL SELECT 語句中使用變數經常傳回意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板