Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql如何在另一个子查询中访问子查询生成的临时表?_Mysql_Sql_Select_Group By_Subquery - Fatal编程技术网

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))
-这是一个很好的技巧。不知道
是否可以这样做。按预期显示结果。谢谢。