Mysql统计选中查询

标签 mysql select count inner-join

请看下面的表格。假设第一个是 table1table2 另一个。 我真的不知道该怎么办,任何人都可以帮助我如何使用 mysql 查询像下面的表一样计数吗?

它计算类型为“a”的“红色”有多少

its count how much red with a type

谢谢

最佳答案

您需要使用 LEFT JOIN相反 INNER JOIN因为有可能 color在另一个表上不存在。

SELECT  a.id,
        a.colour,
        SUM(type = 'a') TypeA,
        SUM(type = 'b') TypeB
FROM    tableColors a
        LEFT JOIN tableName b
            ON a.ncolour = b.colour
GROUP   BY a.id, a.colour

SUM(type = 'a')是一个 mysql 特定的语法,它计算 bool 运算结果的总值。如果你想让它对 RDBMS 更友好,请使用 CASE

SELECT  a.id,
        a.colour,
        SUM(CASE WHEN type = 'a' THEN 1 ELSE 0 END) TypeA,
        SUM(CASE WHEN type = 'b' THEN 1 ELSE 0 END) TypeB
FROM    tableColors a
        LEFT JOIN tableName b
            ON a.ncolour = b.colour
GROUP   BY a.id, a.colour

关于Mysql统计选中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18962559/

相关文章:

mysql - 3表SQL查询

javascript - 使用单个函数更新多个div的charcount

c# - Csharp windows 应用程序 MySql 连接

php - 按 JSON 数组对 SQL 数据进行分组

mysql - 选择数据时mysql查询中的逻辑错误

sql - 连接的不同计数结果

mysql - 同一查询但条件不同的 2 个计数

mysql - 重叠预订查询

mysql - 编写Select语句进行查询

MYSQL View 与选择性能和延迟