请看下面的代码
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"
实际上我在这里要做的是这个。
- 获取所有投资组合的财务详细信息(第一次查询)。
- 获取第一个查询引用的特定投资组合的
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/