MySQL 查询 GROUP BY WHERE IN

标签 mysql sql

我有一个像这样的表:

+------+--------+-----------+
|      | name   | type_id   |
+------+--------+-----------+
|    1 | Bob    | 3         |
|    2 | Tony   | 2         |
|    3 | Sheila | 2         |
|    4 | Sarah  | 8         |
|    5 | Tom    | 7         |
+------+--------+-----------+

我想将我的 type_id 分组到一个名为“type”的新列中。 type_id 2 和 8 的值为“yes”,其他所有值为“no”,因此我的结果如下所示:

+------+--------+-----------+------+
|      | name   | type_id   | type |
+------+--------+-----------+------+
|    1 | Bob    | 3         | no   |
|    2 | Tony   | 2         | yes  |
|    3 | Sheila | 2         | yes  |
|    4 | Sarah  | 8         | yes  |
|    5 | Tom    | 7         | no   |
+------+--------+-----------+------+

这甚至可能吗,如果是的话,它叫什么,因为我已经搜索了关于“GROUP BY”和“JOINS”的文档,但看不到这样的解决方案。

最佳答案

您可以使用 case 来做到这一点:

SELECT *,CASE WHEN type_id IN (2,8) THEN 'yes' ELSE 'no' END as `type`
FROM yourTable

sqlfiddle demo

关于MySQL 查询 GROUP BY WHERE IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19903940/

相关文章:

MySQL IF() 子选择

MySQL bigint、decimal(18,0) 或 char(10) 为主

mysql - 错误代码1215,无法添加外键约束

sql - 如何启动 SQL Server 配置管理器?

mysql - [34, 105] 该表达式不是有效的条件表达式

mysql - 如何更新mysql数据库中的unix时间戳

C# Visual Studio 项目从组合框到文本框

mysql - 如何使用sql select语句获取两个日期范围内的特定列

mysql - 在 sql db 中存储已读文章的最佳方法是什么?

php - Laravel SQL 问题 SQLSTATE[HY000] [1045] 访问被拒绝