MySQL:如何分别从列计数?

the*_*net 5 mysql select count

通常我对SQL查询非常有信心,但是这个让我摸不着头脑.我觉得这应该是一个快速修复,但我只是没有看到它.

我试图在一个查询中对同一个表上的多个值进行计数.

不要介意"0000000000000000",它只是表示一个空字节数组.

有没有一种简单的方法来组合这些查询?

SELECT COUNT(ssn)
FROM patients
WHERE ssn="0000000000000000";

SELECT COUNT(firstname)
FROM patients
WHERE firstname="0000000000000000"

SELECT COUNT(lastname)
FROM patients
WHERE lastname="0000000000000000"

etc...
Run Code Online (Sandbox Code Playgroud)

Joe*_*lli 6

SELECT SUM(CASE WHEN ssn = '0000000000000000' THEN 1 ELSE 0 END) AS ssn_count,
       SUM(CASE WHEN firstname = '0000000000000000' THEN 1 ELSE 0 END) AS first_count,
       SUM(CASE WHEN lastname = '0000000000000000' THEN 1 ELSE 0 END) AS last_count
    FROM patients
    WHERE ssn = '0000000000000000'
        OR firstname = '0000000000000000'
        OR lastname = '0000000000000000'
Run Code Online (Sandbox Code Playgroud)

  • @Marvo:我的标准答案是尝试两者并进行比较.我认为这会更好,因为它是1选择对3. (3认同)

Sam*_*fel 2

你可以做这样的事情 -

SELECT COUNT(ssn) AS patient_count, 'ssn' AS count_type
FROM patients
WHERE ssn="0000000000000000";
UNION
SELECT COUNT(firstname) AS patient_count, 'firstname' AS count_type
FROM patients
WHERE firstname="0000000000000000"
UNION
SELECT COUNT(lastname) AS patient_count, 'lastname' AS count_type
FROM patients
WHERE lastname="0000000000000000"
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用 UNION ALL 代替 UNION,只是为了节省 SQL 服务器一些多余的工作。 (2认同)