我有一个包含以下列的表格:
- 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' 时增加变量的值,但它似乎不起作用。
请指教。
最佳答案
您不需要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 bool 表达式解析为 0/1
。因此,每当列与 y
匹配时,它返回 1,否则返回 0。
因此,如果 is_requested_data1
等于 y
,则以下返回 1
is_requested_data1 = 'y' returns 1
WORKING DEMO 为方便起见,我使用了列名 A、B、C、D
。
关于mysql - 计算一行中不同列的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38988217/