在 JOIN 语句中使用派生的 table
Using the derived table in the JOIN statement
我在 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
我只是想把派生出来的table(myDerivedTable
)一遍一遍的用,而不是每次都去计算!但是mySQL报错:
#1146 - Table 'myDB.myDerivedTable' doesn't exist
当然不存在!通过myDerivedTable
,我并不是要提及数据库中存在的table,而只是引用已经计算出的table!!
我怎样才能达到预期的效果?
这是使用条件聚合获取不同条件计数的另一种方法
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
请参考下文,可能对您有所帮助。
我在 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
我只是想把派生出来的table(myDerivedTable
)一遍一遍的用,而不是每次都去计算!但是mySQL报错:
#1146 - Table 'myDB.myDerivedTable' doesn't exist
当然不存在!通过myDerivedTable
,我并不是要提及数据库中存在的table,而只是引用已经计算出的table!!
我怎样才能达到预期的效果?
这是使用条件聚合获取不同条件计数的另一种方法
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
请参考下文,可能对您有所帮助。