1

我的数据是

ID       SCORE
 1        55
 1        -1
 1        25
 1        -1
 1        -1
 1        35
 2        25
 2        -1 
 2        65
 2        55
 2        21
 2        -1

现在我想添加/求和每个 id 忽略 -1 的分数,我正在尝试使用这个不起作用的代码

SELECT SUM(CASE when SCORE>-1 THEN SUM(SCORE) ELSE 0 END) 
FROM jbit WHERE htno='$id'

在这里我已经在使用 WHERE 所以我如何使用另一个 WHERE,如果我在单个查询中使用多个 Where 它可能会影响其他进程..请帮帮我

帮帮我吧朋友

4

4 回答 4

0

如果只有两列,则无需使用 SUM,您可以在下面尝试

SELECT id, IF(SCORE=-1,0,SCORE) AS scoreSum
FROM table1
GROUP BY id

Working DEMO

替代品(未测试)

SELECT id, SUM(IF(SCORE=-1,0,SCORE)) AS scoreSum
FROM table1
WHERE htno =$id
GROUP BY id
于 2012-09-14T17:49:51.997 回答
0
SELECT SUM(score) AS score_sum
FROM jbit 
WHERE htno='$id'
  AND score <> -1 ;
于 2012-09-14T17:50:27.830 回答
0
SELECT SUM(`SCORE`)
FROM `jbit`
WHERE `htno` = '$id'
    `SCORE` > 0;

不过,我建议您更改'$id'为仅$id列类型htnoINTEGER.

于 2012-09-14T17:51:00.633 回答
-1
SELECT SUM(score) FROM <tablename> WHERE score != -1
于 2012-09-14T17:50:01.490 回答