繁体   English   中英

组合来自不同表的多个 Select 语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM