mysql如何在另一个子查询中访问子查询生成的临时表?
我试过这个:mysql如何在另一个子查询中访问子查询生成的临时表?,mysql,sql,select,group-by,subquery,Mysql,Sql,Select,Group By,Subquery,我试过这个: SELECT ProductId AS GmId, ( SELECT SUM(Amount) FROM tmp WHERE ProductId=GmId AND (AssignDate BETWEEN '$Date1' AND '$Date2') ) AS sum0, ( SELECT SUM(Amount) FROM tmp WHERE ProductId=GmId AND (AssignDate BETWEEN '$Date2' AND '$Date3'
SELECT ProductId AS GmId, (
SELECT SUM(Amount) FROM tmp WHERE ProductId=GmId AND (AssignDate BETWEEN '$Date1' AND '$Date2')
) AS sum0, (
SELECT SUM(Amount) FROM tmp WHERE ProductId=GmId AND (AssignDate BETWEEN '$Date2' AND '$Date3')
) AS sum1 FROM (
SELECT * FROM somerealtable
) tmp GROUP BY ProductId
但是mysql显示错误消息表。tmp不存在代码>
如何做到这一点
编辑:sqlfiddle示例
EDIT2:更复杂的sqlfiddle。不需要使用子查询。你也可以用加入
试试这个:
SELECT a.ProductId AS GmId,
SUM(IF(b.AssignDate BETWEEN '$Date1' AND '$Date2', b.Amount, 0)) AS sum0,
SUM(IF(b.AssignDate BETWEEN '$Date2' AND '$Date3', b.Amount, 0)) AS sum1
FROM somerealtable a
LEFT JOIN tmp b ON a.ProductId=b.GmId
GROUP BY ProductId
考虑提供适当的DDL(和/或SqLFIDLE)连同期望的结果集临时表,虽然在您的问题中没有显示(它们在哪里?),每个会话都是,并且不能跨会话访问,以便Word <代码>临时表仅对当前连接 <代码>和(如果)可见。(b.AssignDate介于“$Date1”和“$Date2”之间,b.Amount,0))
-这是一个很好的技巧。不知道是否可以这样做。按预期显示结果。谢谢。