簡體   English   中英

如何在 MySQL 的同一條語句中聲明一個變量?

[英]How to declare a variable within the same statement in MySQL?

如何在 MySQL 中創建可以在同一語句中引用的變量?

這也適用於 UPDATE 和 INSERT 語句嗎?

我問這個是因為我有很多 SQL 文本文件,我在其中使用 MySQL-Workbench 中的 Ctrl-Enter 執行單個命令。 如果是多個語句,我必須在按 Ctrl-Enter 之前選擇要執行的命令。 這更復雜,更容易出錯。

在有人問之前:這是一個具有單用戶的私有數據庫,我使用這些腳本直接修改數據,而通過 GUI 進行編輯需要很長時間。

我只是決定我應該用 java 程序包裝更復雜的代碼。 這是一個很好的決定。 對於我不想編寫java代碼的不太復雜的問題,我仍然需要這個問題的解決方案。

目前尚不清楚為什么需要在同一語句中執行此操作。 運行兩個語句很容易,它使代碼更容易編寫和理解。 您應該始終考慮成功處理您的代碼的開發人員將如何理解和維護它。

SET @variable = 'Value';

SELECT ... FROM your_table WHERE a_column = @variable;

如果您確實需要在一個語句中執行此操作,我會這樣做:

SELECT ... FROM your_table 
CROSS JOIN (SELECT @variable := 'Value') AS _init
WHERE a_column = @variable;

通過在派生表中執行此操作,它只執行一次分配。 如果您在解決方案中顯示的選擇列表中執行此操作,則會執行與內部查詢返回的行數一樣多的分配。 如果賦值是針對常量值,這沒什么大不了的,但是如果你的變量被賦值為一個代價高昂的表達式的結果,它會很慢。

好吧,我無法在網上找到解決方案。 但結果證明……相當簡單。 只需創建一個包含您的語句的語句:

select *, @variable:='Value' from (
    select * from your_table inner where @variable=inner.column
) as outer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM