1

对于我的投票系统,我有两个可能的值可供投票。1 或 -1,这个值被保存在数据库中。

现在我选择/计算分隔的值,如 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

提前致谢!

西娅。

4

3 回答 3

1
SELECT SUM(thumb) AS votes FROM your_table
于 2013-04-08T12:12:59.247 回答
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
于 2013-04-08T12:12:50.463 回答
0

几件事。您可以大大简化您的查询:

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

因为在 mysql 中(仅)trueis1falseis 0

其次,您需要查询该查询以调整输出:

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
于 2013-04-08T12:30:02.123 回答