[英]SUM() all results (no group by clause)
我有一個奇怪的錯誤。 我有SQL代碼,看起來像:
SELECT
adverse_reaction_type_id,
SUM(CASE adverse_reaction_type_id WHEN 1 THEN `number` ELSE 0 END ) line,
SUM(CASE adverse_reaction_type_id WHEN 2 THEN `number` ELSE 0 END ) drug
FROM
core_reports_adverse_reactions,
...
WHERE
...
這在我的MAMP安裝上工作正常,但不在我的遠程服務器上。 我假設某個地方有一個配置選項阻止它工作。
這是我得到的錯誤:
如果沒有GROUP BY子句,混合GROUP列(MIN(),MAX(),COUNT(),...)沒有GROUP列是非法的
我知道這個錯誤告訴了我什么,但問題是我不想分組。 我希望得到所有結果where位(上面為了簡潔而刪除)匹配,然后返回number
列的SUM()
(作為基於CASE
子句的line
或drug
)。
基本上,無論WHERE
子句匹配什么,我想要返回的都是1行:
line | drug
-----------
10 | 32
有沒有辦法解決這個問題? 或者任何方式我可以GROUP BY nothing
或什么?
您可以在運行SELECT
的表上使用GROUP
BY常量。
例如GROUP BY NULL
:
mysql> select SUM(CASE WHEN product_id = 0 THEN -1 ELSE product_id END) AS sumprod, SUM(quantity) AS sumquant FROM orders GROUP BY NULL;
+---------+----------+
| sumprod | sumquant |
+---------+----------+
| 4 | 8 |
+---------+----------+
1 row in set (0.00 sec)
mysql> select version();
+-------------+
| version() |
+-------------+
| 5.5.25a-log |
+-------------+
1 row in set (0.00 sec)
但通常這個錯誤意味着至少有一個列 沒有分組。
可能是因為在聚合函數中使用CASE會使MySQL的生產版本大吃一驚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.