mysql选择为重复列的第一行以外的所有内容返回空白

标签 mysql sql

是否可以创建一个 mysql select(直接或使用存储过程),它将为重复列返回空白。例如,通常会返回这 7 条记录的 2 列的选择:

Bob   123
Bob   557
Bob   888
Joe   887
Joe   223
Tom   899
Tom   999

我更愿意直接从 sql select 中看到:

Bob   123
      557
      888
Joe   887
      223
Tom   899
      999

我意识到我可以在我的程序中对记录进行后处理,但我想在 sql 调用中用空白替换重复项。

最佳答案

以下应该有效,但它不会按照您在示例中使用的顺序返回结果。

SELECT  IF(n.ID = nm.ID, n.Name, NULL)
        , n.ID
FROM    Names n
        INNER JOIN (
          SELECT  Name
                  , ID = MIN(ID)
          FROM    Names        
          GROUP BY
                  Name
        ) nm ON nm.Name = n.Name
ORDER BY
        n.Name
        , n.ID

关于mysql选择为重复列的第一行以外的所有内容返回空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5668886/

相关文章:

java - Hibernate - ManyToOne 和继承/JOINED/mappedBy

mysql - 事件记录何时真正插入数据库

php - 24/7 AJAX 轮询的效率

sql - 语法错误: expected name_wo_function_call

mysql - 在带有重音的批处理文件上执行sql脚本

mysql - 从 MySQL 获取 Json 格式的 byte[]

sql - 窗口函数 : PARTITION BY one column after ORDER BY another

php - 找不到数据库?

sql - 如何在 SQL 中将两列追加到一列中?

c# - 将 3 个 GridView 导出到 3 个不同的工作表中