sta*_*zel 0 mysql sql where having
我有这样的MySQL查询:
SELECT *, SUM(...some SQL removed for brevety) AS Occurrences FROM some_table AS q
WHERE criterion="value" GROUP BY q.P_id ORDER BY Occurrences DESC LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
我想将结果限制为Occurrences> 0的行.这对我来说似乎很简单,但我似乎无法使其发挥作用.无论我尝试什么,WHERE或HAVING,每当我尝试添加这个限制时,我得到NO ROWS作为回报.我很肯定我的表中有数据应该返回.有谁知道如何完成我正在做的事情?
我试过这个,但它仍然无效.任何想法为什么它仍然无法运作?
SELECT *, SUM(...some SQL removed for brevety) AS Occurrences FROM some_table AS q
WHERE criterion="value" HAVING SUM(...some SQL removed for brevety)>0 GROUP BY q.P_id ORDER BY Occurrences DESC LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
我不像SQL Server那样熟悉MySQL,但在T-SQL中,你不能在GROUP BY子句中使用别名(我最初也认为ORDER BY子句,但后来证明这是不正确的) .在这种情况下,您希望根据GROUP BY的结果进行过滤,因此我将使用HAVING子句,如下所示:
SELECT *, SUM(... some SQL removed for brevity ...) AS Occurrences
FROM
some_table AS q
WHERE
criterion = 'value'
GROUP BY
q.P_id
HAVING
SUM(... some SQL removed for brevity ...) > 0
ORDER BY
Occurrences DESC
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2700 次 |
| 最近记录: |