mysql - 将 2 个 SQL 查询组合在一起时出错

标签 mysql sql join sum inner-join

请看下面的代码

SELECT ongoing_portfolio.*,
Portfolio.Activation
FROM Ongoing_Portfolio
INNER JOIN Portfolio ON Ongoing_Portfolio.idPortfolio = Portfolio.idPortfolio
WHERE ongoing_portfolio.`idPortfolio`= 2 ORDER BY `Updated_Date` DESC LIMIT 4

SELECT SUM(`Transaction_Amount`) AS `Total`
FROM  `transactions`
WHERE `idPortfolio`= 2 AND `Transaction_TimeStamp` <= "2016-12-17"

实际上我在这里要做的是这个。

  1. 获取所有投资组合的财务详细信息(第一次查询)。
  2. 获取第一个查询引用的特定投资组合的 Updated_Date 日期的总交易。 (第二个查询)

现在,我真的需要在一个查询中执行此操作,所以我尝试了以下操作。

 SELECT ongoing_portfolio.*,
Portfolio.Activation,
SUM(Transactions.`Transaction_Amount`) AS `Total` WHERE `Transaction_TimeStamp` <= ongoing_portfolio.`Updated_Date`
FROM Ongoing_Portfolio
INNER JOIN Portfolio ON Ongoing_Portfolio.idPortfolio = Portfolio.idPortfolio
INNER JOIN Transactions ON Transactions.`idPortfolio` = Ongoing_Portfolio.idPortfolio
WHERE ongoing_portfolio.`idPortfolio`= 2 ORDER BY `Updated_Date` DESC LIMIT 4

但是这会产生错误,正如它所说的

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `Transaction_TimeStamp` <= ongoing_portfolio.`Updated_Date`
FROM Ongoing_' at line 3 

我怎样才能成功进行这个查询?

最佳答案

您不能在检索列时使用 where 条件。 您可以使用 if else 或 when 条件求总计。

    SELECT ongoing_portfolio.*,
        Portfolio.Activation,
        SUM(case when Transaction_TimeStamp` <= ongoing_portfolio.`Updated_Date` 
            then Transactions.`Transaction_Amount` end) AS `Total` FROM Ongoing_Portfolio
        INNER JOIN Portfolio ON Ongoing_Portfolio.idPortfolio = Portfolio.idPortfolio
        INNER JOIN Transactions ON Transactions.`idPortfolio` = Ongoing_Portfolio.idPortfolio
        WHERE ongoing_portfolio.`idPortfolio`= 2 group by 'Updated_Date' 
ORDER BY `Updated_Date` DESC LIMIT 4

关于mysql - 将 2 个 SQL 查询组合在一起时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27562481/

相关文章:

php - 在单个 PHP 输出中链接 2 个表.. 最好的方法? PHP/MySQL

mysql DISTINCT 和 Rails uniq 查找唯一记录

java - 我们可以创建一个与数据库约束不匹配的 JPA 映射吗?

mysql - 如何使用变量从 MySql 查询获取数据集

sql - Postgres : Temporary table in function is persistent. 为什么?

java - SQL/Java并发事务死锁

mysql - 这是为数据库应用程序提供服务的安全方法吗?

sql - ScalaQuery 多个主键和外键

performance - 在 PostgreSQL 中,在同一个表中包含 TEXT 列比在单独的表中包含更快吗?

arrays - 加入 inet[] 到 inet