【问题标题】:Combine Multiple Select Statements from different tables组合来自不同表的多个选择语句
【发布时间】:2011-07-03 09:34:36
【问题描述】:

我有这个 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 服务器 使用正确语法的版本 '+ (SELECT SUM(AMOUNT) AS 借方总计 FROM x.Card WHERE user_Id ' 在第 10 行 0.000 秒

【问题讨论】:

标签: c# mysql database entity-framework


【解决方案1】:
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
    ) 

【讨论】:

    【解决方案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 很生疏,也懒得检查语法是否正确,但我认为它应该可以工作。

    【讨论】:

    • 对不起...似乎我误解了你真正的问题:)。
    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2012-01-30
    相关资源
    最近更新 更多