Mysql 计算多列中的值如果减去则 1

Mysql count values in multiple columns if minus then 1

您好,我有一个数据库,我尝试进行计数,我可以在其中对值进行乘法运算,然后从中进行计数。

    ----------------------
    |id | name|parts|date|
    ---------------------
    |1  |abc  | 2   |2016|
    ---------------------
    |1  |bcd  | 3   |2017|
    ---------------------
    |1  |cde  | -5  |2018|
    ----------------------

而我需要的是:

    -----------
    |id |count|
    -----------
    |1  |  6  | 
    -----------

正如我所说,如果我有一个 minu(-),那么 1 与 -3 或 -5 是否等于 1 无关; 2+3+1 = 6;

SELECT `id`, 
SUM(CASE WHEN (`parts` < 0) THEN 1 ELSE `parts` END) AS Count 
FROM `TableName` 
GROUP BY `id`

SUM() 函数 return 是数字列的总和。

CASE 函数可让您评估条件并 return 满足第一个条件时的值(类似于 IF-THEN-ELSE 语句)

试试这个查询:

SELECT id, SUM(IF(parts < 0, 1, parts)) AS `count`

FROM table

GROUP BY id

看了好几遍,我觉得这就是你想要达到的效果。

SELECT 
    id, 
    SUM(IF(parts < 0, 1, parts)) AS count
FROM 
    products
GROUP BY
    id