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

标签 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' 时增加变量的值,但它似乎不起作用。

请指教。

最佳答案

您不需要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/

相关文章:

mysql - 如何使用 Sinatra 和 Datamapper 将数组从表单传递到数据库?

unix - mysqldump 丢失表数据

php - Mysql - 变量等于或小于字符串

php - 在 where 子句中仅选择年份和月份

php - 将输入的信息发送到数据库中的 MySQL 表的 HTML 表单

mysql - 从路径MYSQL中提取文件名

python - Django - SQL 查询 - 时间戳

mysql - UTF8 数据库文本无法在 cakephp3 上运行

javascript - Post请求在服务器端返回未定义

mysql - 将多个表中的多个数据放入一个 bean 中