MySQL计算多列

时间:2013-10-24 03:56:40

标签: php mysql sql

我有一张名为“问卷”的表格,其结构如下:

user_id   |      Q01      |       Q02        |      Q03         |
00001     |      Yes      |      Yes         |      Yes         |
00002     |      Yes      |      No          |      Yes         |
00003     |      Yes      |      No          |      No          |

我正在弄清楚如何计算每个用户(user_id)的“是”的数量。例如:

00001 - 3
00002 - 2
00003 - 1

我只想显示没有UserID的结果..

在此之前,我已将Yes和No存储为“1”和“0”,因此我可以使用以下内容:

SELECT CONCAT(Q01+Q02+Q03) FROM `#__table` WHERE `id` = '[user_id]'

我似乎无法找到正确的查询,因为它不再是整数..

3 个答案:

答案 0 :(得分:1)

SELECT (Q01 = 'Yes') + (Q02 = 'Yes') + (Q03 = 'Yes')
FROM #__table 
WHERE id = '[user_id]'

答案 1 :(得分:0)

SELECT if(Q01 = 'Yes',1,0) + if(Q02 = 'Yes',1,0) + if(Q03 = 'Yes',1,0)
FROM #__table 
WHERE id = '[user_id]'

答案 2 :(得分:0)

SELECT sum(yes)
FROM (
        (SELECT count(*) yes
         FROM #__TABLE
         WHERE Q01='yes'
           OR Q02='yes'
           OR Q03='yes'
           AND user_id=00001)
      UNION ALL
        (SELECT count(*) yes
         FROM #__TABLE
         WHERE Q01='yes'
           OR Q02='yes'
           OR Q03='yes'
           AND user_id=00002)
      UNION ALL
        (SELECT count(*) yes
         FROM #__TABLE
         WHERE Q01='yes'
           OR Q02='yes'
           OR Q03='yes'
           AND user_id=00003)) AS tt;

我认为这样可以正常工作。