[英]Combine Multiple Select Statements from different tables
我有这个 MYSQL SP,它针对不同的表执行 SUm,但我希望 SP 将所有结果返回一个表中的一行我尝试使用 + 来组合选择的结果,但它得到错误
DROP PROCEDURE IF EXISTS x.GetFinanceContent;
delimiter //
CREATE PROCEDURE x.GetFinanceContent
(
IN userId INT
)
BEGIN
(SELECT SUM(AMOUNT) AS creditTotal
FROM x.Card1
WHERE user_Id = userId and card_type=1)
+
(SELECT SUM(AMOUNT) AS debitTotal
FROM x.Card2
WHERE user_Id = userId and card_type=2)
END;//
错误代码:1064 您的 SQL 语法有错误; 检查与您的 MySQL 服务器版本相对应的手册,以获取在第 10 行 0.000 秒的 '+ (SELECT SUM(AMOUNT) AS debitTotal FROM x.Card WHERE user_Id ' 附近使用的正确语法
SELECT
( SELECT SUM(AMOUNT) AS creditTotal
FROM x.Card1
WHERE user_Id = userId AND card_type=1
)
, ( SELECT SUM(AMOUNT) AS debitTotal
FROM x.Card2
WHERE user_Id = userId AND card_type=2
)
如果您想对这些总和进行求和,您可以进行如下查询:
SELECT ((SELECT SUM(AMOUNT) AS creditTotal
FROM x.Card1
WHERE user_Id = userId and card_type=1) +
(SELECT SUM(AMOUNT) AS debitTotal
FROM x.Card2
WHERE user_Id = userId and card_type=2)) as total
使用 union http://dev.mysql.com/doc/refman/5.0/en/union.html如果你想得到一个结果集......
DROP PROCEDURE IF EXISTS x.GetFinanceContent;
delimiter //
CREATE PROCEDURE x.GetFinanceContent
(
IN userId INT
)
BEGIN
(SELECT SUM(AMOUNT) AS creditTotal
FROM x.Card1
WHERE user_Id = userId and card_type=1)
UNION
(SELECT SUM(AMOUNT) AS debitTotal
FROM x.Card2
WHERE user_Id = userId and card_type=2)
END;//
虽然我现在对 SQL 生疏了,懒得检查语法是否正确,但我认为它应该可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.