create 如何在MySQL中聲明一個變量?



mysql syntax select (4)

如何在mysql中聲明一個變量,以便我的第二個查詢可以使用它?

我想寫一些像:

SET start = 1;
SET finish = 10;

SELECT * FROM places WHERE place BETWEEN start AND finish;

Answer #1

使用設置選擇

SET @counter := 100;
SELECT @variable_name := value;

例如:

SELECT @price := MAX(product.price)
FROM product 

Answer #2

DECLARE var_name [,var_name] ... type [DEFAULT value]該語句聲明存儲程序中的局部變量。

防爆。 DECLARE id INT unsigned DEFAULT 1;

要為變量提供默認值,請包含DEFAULT子句。 該值可以被指定為一個表達式; 它不一定是一個常數。 如果缺少DEFAULT子句,則初始值為NULL。

就數據類型和溢出檢查而言,局部變量被視為存儲的例程參數。

變量聲明必須出現在游標或處理程序聲明之前。

局部變量名稱不區分大小寫。 允許的字符和引用規則與其他標識符相同

局部變量的作用域是聲明它的BEGIN ... END塊。 變量可以在嵌套在聲明塊中的塊中引用,除了聲明具有相同名稱的變量的塊之外。


Answer #3

SET @var_name = value 

要么

SET @var := value

運營商=:=都被接受

選擇

SELECT col1, @var_name := col2 from tb_name WHERE "conditon";

如果多個記錄集只發現col2中的最後一個值是keep(覆蓋);

SELECT col1, col2 INTO @var_name, col3 FROM .....

在這種情況下,select的結果不包含col2值


Answer #4

MySQL中主要有三種類型的變量:

  1. 用戶定義的變量 (以@開頭):

    您可以訪問任何用戶定義的變量而無需聲明或初始化它。 如果您引用了尚未初始化的變量,則其值為NULL和一種字符串。

    SELECT @var_any_var_name
    

    您可以使用SETSELECT語句初始化一個變量:

    SET @start = 1, @finish = 10;    
    

    要么

    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    

    用戶變量可以從有限的一組數據類型中分配一個值:整型,十進制,浮點型,二進製或非二進製字符串或NULL值。

    用戶定義的變量是會話特定的。 也就是說,一個客戶端定義的用戶變量不能被其他客戶端看到或使用。

    它們可以用於使用高級MySQL用戶變量技術的 SELECT查詢。

  2. 局部變量 (無前綴):

    在訪問本地變量之前,需要使用DECLARE聲明局部變量。

    它們可以用作局部變量和存儲過程中的輸入參數:

    DELIMITER //
    
    CREATE PROCEDURE sp_test(var1 INT) 
    BEGIN   
        DECLARE start  INT unsigned DEFAULT 1;  
        DECLARE finish INT unsigned DEFAULT 10;
    
        SELECT  var1, start, finish;
    
        SELECT * FROM places WHERE place BETWEEN start AND finish; 
    END; //
    
    DELIMITER ;
    
    CALL sp_test(5);
    

    如果缺少DEFAULT子句,則初始值為NULL

    局部變量的作用域是聲明它的BEGIN ... END塊。

  3. 服務器系統變量 (以@@ ):

    MySQL服務器維護許多配置為默認值的系統變量 。 它們可以是GLOBALSESSIONBOTH類型。

    全局變量影響服務器的整體操作,而會話變量影響其對各個客戶端連接的操作。

    要查看正在運行的服務器使用的當前值,請使用SHOW VARIABLES語句或SELECT @@var_name

    SHOW VARIABLES LIKE '%wait_timeout%';
    
    SELECT @@sort_buffer_size;
    

    可以在服務器啟動時使用命令行選項或選項文件來設置它們。 它們中的大多數可以在服務器使用SET GLOBALSET SESSION運行時動態更改:

    -- Syntax to Set value to a Global variable:
    SET GLOBAL sort_buffer_size=1000000;
    SET @@global.sort_buffer_size=1000000;
    
    -- Syntax to Set value to a Session variable:
    SET sort_buffer_size=1000000;
    SET SESSION sort_buffer_size=1000000;
    SET @@sort_buffer_size=1000000;
    SET @@local.sort_buffer_size=10000;
    




sql