mysql - 我想要查询显示表结果并仅使用 MySQL 查询

标签 mysql

表A

ID   |   NAME
-----+-------
n1   |   BLACK
n2   |   WHITE
n3   |   RED
n4   |   GREEN

表B

ID |   A_ID  |   BLABLA      |    TIME
---+---------+---------------+--------
1  |   n1    |    X          | sometime
2  |   n1    |    X          | sometime
3  |   n1    |    X          | sometime
4  |   n1    |    Y          | sometime
5  |   n1    |    Z          | sometime
6  |   n2    |    Y          | sometime
7  |   n2    |    Y          | sometime
8  |   n2    |    Y          | sometime
9  |   n3    |    X          | sometime
10 |   n3    |    Z          | sometime
11 |   n3    |    Z          | sometime
12 |   n3    |    Z          | sometime

我的问题

我想要查询显示表结果并仅使用 MySQL 查询。

表格结果

NAME       |     X    |    Y    |    Z
-----------+----------+---------+-----
BLACK      |    3     |     1   |    0
WHITE      |    0     |     3   |    0
RED        |    1     |     0   |    3
GREEN      |    0     |     0   |    0

最佳答案

SELECT 
  a.name
  , sum(CASE WHEN b.blabla LIKE 'X' THEN 1 ELSE 0 END) AS X
  , sum(CASE WHEN b.blabla LIKE 'Y' THEN 1 ELSE 0 END) AS Y
  , sum(CASE WHEN b.blabla LIKE 'Z' THEN 1 ELSE 0 END) AS Z
FROM tablea a
INNER JOIN tableb b ON (a.id = b.a_id)
GROUP BY a.name

我使用 like 而不是 =,因为 like 始终不区分大小写,而 = 则不然。
如果 blabla 是一个枚举,那么我建议使用 =

关于mysql - 我想要查询显示表结果并仅使用 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7684415/

相关文章:

MySQL 从两个表与一个左连接

mysql - nodejs 如何用 2 条语句执行 mysql 查询

php - Laravel 多个查询不起作用的地方

php - 需要在 php 中使用 jquery 获取选中的输入和复选框值

mysql - 插入sql数据库,但可能超出范围

php - 在数据库中找到的 Set product new from date 在哪里?

mysql - 无法删除或更新父行: a foreign key constraint fails

mysql 5.5 怎么设置成utf8?

PROCEDURE 声明中无法识别 MySQL 标签语句

php - 插入每个数据不同的行 PDO