计算一行中不同列的特定值

时间:2016-08-17 04:40:04

标签: mysql

我有一个包含以下列的表:

 - request_id (Auto increment)
    - is_requested_data1 - (Enum (y,n)
    - is_requested_data2 - (Enum (y,n)
    - is_requested_data3 - (Enum (y,n)
    - is_requested_data4 - (Enum (y,n)

对于特定的行,假设request_id = 1,我想知道'y'的计数。 我已经尝试声明一个变量,并尝试在每次使用mysql情况的任何列都有'y'时增加变量的值,但它似乎不起作用。

请指教。

1 个答案:

答案 0 :(得分:1)

您不需要COUNT,只需+

SELECT
    request_id,
    (
        (is_requested_data1 = 'y') + 
        (is_requested_data2 = 'y') + 
        (is_requested_data3 = 'y') + 
        (is_requested_data4 = 'y')
    ) AS totalYs
FROM 
    your_table
WHERE request_id = 1

注意:由于MySQL布尔表达式解析为0/1。因此,只要列与y匹配,它就会返回1,否则为0。

因此,如果is_requested_data1等于y,则以下返回1

is_requested_data1 = 'y' returns 1

WORKING DEMO 为方便起见,我使用了列名A, B, C, D