1

我在 PHP 中有一个数据库查询,类似于:

SELECT * FROM ($myQuery) AS myDerivedTable
JOIN ( SELECT COUNT(*) FROM myDerivedTable WHERE criteriaA ) AS A
JOIN ( SELECT COUNT(*) FROM myDerivedTable WHERE criteriaB ) AS B
JOIN ( SELECT COUNT(*) FROM myDerivedTable WHERE criteriaC ) AS C
...

现在,假设$myQuery包含以下内容:

SELECT * FROM table1 ORDER BY dateOfSubmition DESC

我只是想myDerivedTable一次又一次地使用派生表(),而不是每次都计算它!但是mySQL报错:

#1146 - Table 'myDB.myDerivedTable' doesn't exist

当然不存在!by myDerivedTable,我并不是要提到数据库中存在的表,而只是对已经计算好的表的引用!

我怎样才能达到预期的行为?

4

2 回答 2

0

请参考下面,它可能对您有所帮助。

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc32300.1570/html/sqlug/sqlug432.htm

于 2016-02-16T05:14:24.590 回答
0

这是另一种使用条件聚合来获取不同标准的计数的方法

SELECT 
    COUNT(CASE WHEN criteriaA THEN 1 END) AS A
    COUNT(CASE WHEN criteriaB THEN 1 END) AS B
    COUNT(CASE WHEN criteriaC THEN 1 END) AS C
FROM ($myQuery) AS myDerivedTable
于 2016-02-16T05:00:27.737 回答