具有来自不同表的多个选择语句的 MySQL 存储过程

Oma*_*lim 3 mysql stored-procedures

我正在尝试从 mysql 存储过程中的不同表中进行多次选择,如下所示

DELIMITER //  
CREATE PROCEDURE `NovemberSummary`(IN `branch` VARCHAR(60), IN `year` INT) NOT 
DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER 
BEGIN
select sum(sales.amount) as Sales from sales where month (sales.date)= 11 and 
sales.branch = branch;
select sum(expenses.amount) as Expenses from expenses where month(expenses.date)= 11
and expenses.branch = branch;
END
Run Code Online (Sandbox Code Playgroud)

但它只返回第一个选择,因为结果集中只包含销售列。

MySQL 版本为 5.6.11 - MySQL 社区服务器

kro*_*lko 7

试试这个方法:

DELIMITER //  
CREATE PROCEDURE `NovemberSummary`(IN `branch` VARCHAR(60), IN `year` INT) NOT 
DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER 
BEGIN
SELECT 
   ( select sum(sales.amount) from sales 
     where month (sales.date)= 11 and sales.branch = branch ) as Sales ,
   ( select sum(expenses.amount) from expenses 
     where month(expenses.date)= 11 and expenses.branch = branch ) as Expenses 
   ;
END
Run Code Online (Sandbox Code Playgroud)

此过程返回一个包含两列的结果集:销售额 + 费用:

+-------+----------+
| Sales | Expenses |
+-------+----------+
|    20 |       15 |
+-------+----------+
Run Code Online (Sandbox Code Playgroud)

, 而不是只有一列的两个结果集。

+-------+
| Sales |
+-------+
|    20 |
+-------+

+----------+
| Expenses |
+----------+
|       15 |
+----------+
Run Code Online (Sandbox Code Playgroud)