2017-08-10 52 views
1

我想獲得變量中兩個表中記錄數的總和。以下是代碼:選擇並添加到存儲過程中的變量的當前值mysql

declare v_sum int default 0; 
declare v_count2 int default 0; 

select count(*) into v_sum 
from table1; 

select count(*) into v_count2 
from table2; 

set v_sum = v_sum + v_count2; 

有什麼辦法可以直接選擇和v_sum添加表2計數,而無需創建v_count2變量。

回答

1

你不需要兩個變量。一種方法是兩套組合,然後做COUNT

SELECT COUNT(*) 
INTO v_sum 
FROM (SELECT 1 AS c 
FROM table1 
UNION ALL 
SELECT 1 
FROM table2) AS sub 

編輯:

SELECT SUM(c) 
INTO v_sum 
FROM (SELECT COUNT(*) AS c 
    FROM table1 
    UNION ALL 
    SELECT COUNT(*) 
    FROM table2) AS sub 
+0

如果表格包含數百萬條記錄,我應該使用它嗎?或寫單獨的查詢會更好? – ctor

+0

@ctor比較兩種解決方案。 – lad2025

1

您可以直接使用的查詢,如:

SET v_sum = v_sum + (SELECT COUNT(*) FROM table2); 
0

一種避免變量可以是:

select v_sum + count(*) into v_sum 
from table2;