MySQL SELECT 語法使用 變數暫存

MySQL 於 CLI (Client) 的 MySQL 介面裡面,想要把 SQL 的結果使用變數暫時儲存,可以怎麼做呢?

MySQL SELECT 語法使用 變數暫存

於 MySQL CLI 的 MySQL 界面裡,想要暫存變數,可以有下述幾種作法:(注意:SELECT 結果 只能有一筆結果)

使用 SET 語法

  • SET @col_val := (SELECT MAX(col_name) FROM TABLE_NAME);
    • SELECT @col_val;
  • SET @col_val := (SELECT col_name FROM TABLE_NAME LIMIT 1);
    • SELECT @col_val;

使用 INTO 語法

  • SELECT count(*) FROM TABLE_NAME INTO @var_count;
    • SELECT @var_count;
  • SELECT col_name FROM TABLE_NAME INTO @col_val;
    • SELECT @col_val;

使用 INTO 與 多個欄位指定

  • SELECT col_name INTO @col_val FROM TABLE_NAME WHERE id = 1;
    • SELECT @col_val;
  • SELECT col1,col2 INTO @col1,@col2 FROM TABLE_NAME LIMIT 1;
    • SELECT @col1, @col2;

多重欄位直接指定

  • SELECT @total_count := COUNT(*), @total_price := SUM(price) FROM TABLE_NAME;

變數若需要做判斷(三元運算子)

  • SELECT if (@col_val > 0, @col_value, -1);
    • 若 @col_val > 0,就回傳 @col_value 的值,不然就回傳 -1
    • 語法類同: (@col_val) ? @col_val : -1;
  • SELECT if (@col_val > 0, "==> " + @col_value, -1 );
    • 同上,只是回傳的欄位多加上 "==> " 的符號

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料