我有一个包含以下列的表:
- 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'时增加变量的值,但它似乎不起作用。
请指教。
答案 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
。