当前位置: 首页 > 面试题库 >

MySQL选择不同的行到一个逗号分隔的列表列

龙承德
2023-03-14
问题内容

我目前有一些带回标签的sql。它们应该具有不同的ID,但没有。…所以我当前的数据如下:

Microsoft | GGG | 1 | 167
Microsoft | GGG | 1 | 2
Microsoft | GGG | 1 | 1

我想做的是只返回一行,最后一列连接到分隔列表中,例如:

Microsoft | GGG | 1 | 167, 2, 1

我为此使用mySQL 5。


问题答案:

使用GROUP_CONCAT()此,具有GROUP BY覆盖其他三列:

SELECT 
  name,   -- Microsoft
  other,  -- GGG
  other2, -- 1
  GROUP_CONCAT(id) AS ids
FROM tbl
GROUP BY name, other, other2


 类似资料:
  • 问题内容: 不幸的是,我有一个字段列,其中包含诸如 4 12,3 8,5,6,7 我将编写一个SELECT语句,其结果将是: 4 12 8 由于MySQL不提供“拆分”功能,我如何在实践中做到这一点? 问题答案: 使用MySQL的功能: 但是,将列表保留在以定界符分隔的字符串中通常是对像MySQL这样的关系数据库管理系统的低效使用:通常最好通过将这样的列表保留在成对的单独表中来规范化数据结构。

  • 问题内容: 我有一个未标准化的表,其中的列包含逗号分隔的列表,该列表是另一个表的外键: 我想将此数据读入不提供过程语言的搜索引擎中。 那么,有没有一种方法, 要么 就这一栏中加入 或 该数据运行查询插入相应的条目到一个新的表?结果数据应如下所示: 如果DBMS支持返回表的函数,但MySQL显然不支持,我可以想到一个解决方案。 问题答案: 在MySQL中,可以通过以下方式实现 现在要获取逗号分隔的v

  • 问题内容: 我需要运行类似的查询: 但是我希望子选择返回逗号分隔的列表,而不是数据列。这有可能吗?如果可以,怎么办? 问题答案: 您可以使用GROUP_CONCAT执行该操作,例如

  • 问题内容: 我需要这个问题的帮助。 在MYSQL表中,我有一个字段: 我需要找到艺术家uid 401的所有记录 我做这个 我所有记录的artist_list字段值仅是“ 401”,但是如果我有11,401,则此查询不匹配。 任何的想法 ? (我无法使用LIKE方法,因为如果艺术家uid为3(匹配30、33、3333)… 问题答案: 短期解决方案 使用FIND_IN_SET函数: 长期解决方案 标准

  • 问题内容: 我想比较具有两个不同Oracle表的逗号分隔值的两列(差异表)的值。我想找到与所有值 都 匹配的行( 所有值都应与值匹配)。 注意:逗号分隔值的顺序不同。 例子: T1: T2: MY RESULT应该仅在两个表中显示基于“所有名称匹配”的匹配行。 尝试过但无法使其正常工作。 我使用下面的代码来解析值: 问题答案: 您可以将表格转换为第一范式,然后比较存储在每一行中的化合物。起点可以是

  • 问题内容: 我有以下表格: 过滤器 使用者 我想运行以下选择 我想收到 但是我什么也没收到。 问题在于该字段是文本,因此“ in select”返回的内容类似于“ 1、2、3”(带有分号),因此 in 找不到任何值。 是否可以进行强制转换或将字符串更改为数组的选项? 问题答案: 最好规范化您的架构,不要以逗号分隔列表的形式存储关系,而是为此创建一个联结表,以维护用户和过滤器之间的 m:m 多对多关