2013-04-08 78 views
1

对于我的投票系统,我有两种可能的投票值。 1或-1,这个确切的值被保存在数据库中。mysql resturn value as min or plus from sum

现在我选择/计数像field_up和field_down分开的值。我想改变我的查询输出只有一个值,如:

如果我们有'+6'和-5它应该返回+1(带+) 如果我们有-3和+2它应该返回-1(带 - )

现在我有后续查询提前

SELECT 
SUM(CASE thumb when 1 then 1 else 0 end) AS "thumbs_up", 
SUM(CASE thumb when -1 then 1 else 0 end) AS "thumbs_down" 
FROM ..etc 

谢谢!

Thea。

回答

1
SELECT SUM(thumb) AS votes FROM your_table 
0

试试这个

SELECT 
SUM(CASE WHEN thumb =1 THEN 1 ELSE 0 END) as "thumbs_up", 
SUM(CASE WHEN thumb =-1 THEN 1 ELSE 0 END) as "thumbs_down", 

FROM ..etc 
+0

@Freshtea你可以试试这个 – PSR 2013-04-08 12:14:00

+0

@@ Freshtea是工作ü – PSR 2013-04-08 12:19:09

0

夫妇的事情。您可以大大简化您的查询到这一点:

SELECT 
SUM(thumb = 1) AS thumbs_up, 
SUM(thumb = -1) AS thumbs_down 
FROM ..etc 

因为在MySQL(只)true1false0

其次,你需要查询了该查询来调整输出:

SELECT concat(if(thumbs_up > thumbs_down, '+', ''), thumbs_up - thumbs_down) 
FROM (
SELECT 
    SUM(thumb = 1) AS thumbs_up, 
    SUM(thumb = -1) AS thumbs_down 
    FROM ..etc 
) x