mysql - 使用 case 语句插入列

标签 mysql sql insert case

我有一个问题,我想在单个列中查找语句,每次找到它们时都会在组合中插入一个新列。我正在使用 mysql 数据库。

例如说我有这样的数据

  Class     Sub
  -----------------
    1       math       
    1       tech 
    2       math
    2       english
    3       math

我希望数据这样输出:

Class    math  tech english
---------------------------
    1      Y     Y     N
    2      Y     N     Y
    3      Y     N     N

我正在尝试使用 CASE 语句来查找列中的值,但问题是它只会在列中为它找到的值返回一个结果,我最终得到同一类重复每列的 case 语句。组合 case 语句不会起作用,因为它仍然给我一个列。

最佳答案

您需要将 CASE 表达式包装在一个聚合中并添加一个 GROUP BY。在这种情况下,MAX 将按字母顺序工作,因为 YN

之后

(SQL Fiddle Demo)

SELECT class,
       MAX(CASE
             WHEN ( community_id = 'Math' ) THEN 'Y'
             ELSE 'N'
           END)  AS Math,
       MAX (CASE
              WHEN ( community_id = 'tech' ) THEN 'Y'
              ELSE 'N'
            END) AS tech,
       MAX (CASE
              WHEN ( community_id = 'english' ) THEN 'Y'
              ELSE 'N'
            END) AS english
FROM   x_class_community
GROUP  BY class 

关于mysql - 使用 case 语句插入列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13977000/

相关文章:

基于 postgresql 公司 id 的序列

PHP PDO 默默地不插入

php - 将查询另存为 CSV 文件,但无法获取要写入 CSV 的表头字段名称

mysql - Django查询相关模型

mysql select ... in ,统计几个匹配相关性

sql - 如果为空则连接数据

mysql - 如何使用数字搜索 varchar 列?

php - SQL 语法错误 (phpMyAdmin)

SQL 服务器 : Merging Several Rows of Data into a Single Row

bash - SQLite插入的bash循环错误