SQL GROUP_CONCAT 拆分为不同的列

2024-01-30

我进行了很多搜索,但没有找到解决我的问题的正确方法。

我想做什么?

我在 MySQL 中有 2 个表: - 国家 - 货币 (我通过 CountryCurrency 将它们加入到一起 --> 由于多对多的关系)

请参阅此示例:http://sqlfiddle.com/#!2/317d3/8/0 http://sqlfiddle.com/#!2/317d3/8/0

我想使用联接将两个表链接在一起,但我只想显示每个国家/地区一行(某些国家/地区有多种货币,所以这是第一个问题)。

我找到了 group_concat 函数:

SELECT country.Name, country.ISOCode_2, group_concat(currency.name) AS currency
FROM country
INNER JOIN countryCurrency ON country.country_id = countryCurrency.country_id
INNER JOIN currency ON currency.currency_id = countryCurrency.currency_id
GROUP BY country.name

这有以下结果:

NAME            ISOCODE_2   CURRENCY

Afghanistan AF          Afghani
Åland Islands   AX          Euro
Albania         AL          Lek
Algeria         DZ          Algerian Dinar
American Samoa  AS          US Dollar,Kwanza,East Caribbean Dollar

但我现在想要的是将货币拆分为不同的列(货币 1、货币 2,...)。我已经尝试过像 MAKE_SET() 这样的函数,但这不起作用。


你可以这样做substring_index()。以下查询使用您的查询作为子查询,然后应用此逻辑:

select Name, ISOCode_2,
       substring_index(currencies, ',', 1) as Currency1,
       (case when numc >= 2 then substring_index(substring_index(currencies, ',', 2), ',', -1) end) as Currency2,
       (case when numc >= 3 then substring_index(substring_index(currencies, ',', 3), ',', -1) end)  as Currency3,
       (case when numc >= 4 then substring_index(substring_index(currencies, ',', 4), ',', -1) end)  as Currency4,
       (case when numc >= 5 then substring_index(substring_index(currencies, ',', 5), ',', -1) end)  as Currency5,
       (case when numc >= 6 then substring_index(substring_index(currencies, ',', 6), ',', -1) end)  as Currency6,
       (case when numc >= 7 then substring_index(substring_index(currencies, ',', 7), ',', -1) end)  as Currency7,
       (case when numc >= 8 then substring_index(substring_index(currencies, ',', 8), ',', -1) end)  as Currency8
from (SELECT country.Name, country.ISOCode_2, group_concat(currency.name) AS currencies,
             count(*) as numc
      FROM country
      INNER JOIN countryCurrency ON country.country_id = countryCurrency.country_id
      INNER JOIN currency ON currency.currency_id = countryCurrency.currency_id
      GROUP BY country.name
     ) t

表达方式substring_index(currencies, ',' 2)将列表中的货币显示为第二个。对于美属萨摩亚来说,这将是'US Dollar,Kwanza'。下一次通话-1因为参数采用列表的最后一个元素,这将是'Kwanza',这是第二个元素currencies.

另请注意,SQL 查询返回一组明确定义的列。查询不能具有可变数量的列(除非您通过prepare陈述)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL GROUP_CONCAT 拆分为不同的列 的相关文章

  • WordPress 访问

    我正在与朋友一起开发一个网站 使用Wordpress我们正在尝试从我的计算机和他的计算机访问同一个 WordPress 帐户 以便我们可以一起在网站上工作 我们尝试将彼此添加为管理员 但只能从创建管理员的计算机上访问新帐户 有谁知道如何做到
  • 带有 viewbags 的 MVC 数据集

    如何将数据集放入视图袋中并在视图中显示结果 我有一个来自模型的数据集 并将其写入视图包 我想使用 foreach 循环从视图中的视图包中获取数据行 我已经有一个变量进入视图 所以我无法正常传递数据集 每页我还会有许多其他数据集 所以我认为
  • 显示多个表的账户余额

    我有以下两个表 其中存储有关贷记和借记记录的信息 couponCr 表包含 voucherType voucherPrefix voucherNo crparty cramount SALES S 1 1 43000 SALES S 2 1
  • 单向关系和双向关系的区别

    我想知道这两个词是什么意思 我遇到他们是在教义的文档 http www doctrine project org documentation manual 2 0 en association mapping 但我不明白他们的意思 这与常见
  • 如何重命名 SQL Server 中名称中带有方括号的内容?

    我的一张桌子上有一列 周围有方括号 Book Category 我想重命名为Book Category 我尝试了以下查询 sp rename BookPublisher Book Category Book Category COLUMN
  • 查询中的存储过程

    有一个程序获取文件列表 顾名思义 返回一个文件列表以及更多选项 那么是否可以在查询选择中使用此过程 像这样的东西 select Field1 from Image where Field2 IN call GetFileList 你应该把它
  • PDO 库比本机 MySQL 函数更快吗?

    我已经阅读了几个与此相关的问题 但我担心它们可能已经过时 因为自这些问题得到解答以来 更新版本的 PDO 库已经发布 我编写了一个 MySQL 类 它构建查询并转义参数 然后根据查询返回结果 目前这个类正在使用内置的mysql函数 我很清楚
  • 如何通过单个mysql查询更新多个表?

    我有两个表 tb1 和 tb2 我必须在用户级别更新两个表的公共列 我对两个表都有一个共同的标准 例如用户名 所以我想这样更新 UPDATE tb1 tb2 SET user level 1 WHERE username Mr X 但不知何
  • 将 copyfromrecordset 写入范围

    我有以下 vba 它从单元格 C10 开始读取 MCO 直到其为空 并将从 SQL 数据库获取机器数量 解密和升级机器数量 这工作正常 但我在获取相应行中的数据时遇到问题 目前它总是将数据写入 D10 因为我已经对其进行了硬编码 但我不确定
  • MS Access:在列中搜索星号/星号

    我正在寻找一种方法来搜索包含字符串数据类型的列 问题是星号或星号是保留符号 以下查询无法正常工作 select from users where instr pattern 如何编写 Access 查询来搜索列中的星号 您可以使用方括号在
  • 获取jdbc中表依赖顺序

    我在 MySQL 数据库中有一组表 A B C D 依赖关系如下 B gt C gt A 和 D gt A 也就是说 A 有一个 PrimaryKey C 有一个外键指向 A 的主键 B 有一个外键指向 C 的主键 类似地 D 有一个外键指
  • 如何更改 Amazon Redshift 中的默认时区?

    默认情况下将时间戳列设置为 SYSDATE 将其存储为UTC 是否可以更改时区 以便 SYSDATE 将日期和时间存储到不同的时区 到目前为止 我已经检查了SET http docs aws amazon com redshift late
  • 如何在sql中提取周数

    我有一个 varchar2 类型的转换列 其中包含以下主菜 01 02 2012 01 03 2012 etc 我使用 to date 函数将其转换为另一列中的日期格式 这是我得到的格式 01 JAN 2012 03 APR 2012 当我
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • _mysql_connector.MySQLInterfaceError:命令不同步;您现在无法运行此命令 python msql.connector

    我有一个功能 您可以在下面看到 如果运行此函数 我将收到您在标题中看到的错误 您能帮助我吗 不久前我能够用锁解决这个问题 但现在它们不起作用 我知道这与我的连接有关 但我不知道如何解决这个问题 def insertNewValues sel
  • 动态 SQL 和 where case 哪个更好?

    我需要创建一个带有 12 个参数的存储过程 并使用这些参数的不同组合来过滤查询 所有 12 个参数都不是强制性的 就好像我传递 3 5 或 12 个参数取决于用户输入的搜索输入一样 我可以通过两种方式创建 即使用动态 SQL 查询或使用 C
  • 无法将方法组“Read”转换为非委托类型“bool”

    我正在尝试使用SqlDataReader检查条目是否存在 如果存在则返回ID 否则返回false 当我尝试编译时 出现错误 无法将方法组 Read 转换为非委托类型 bool 我一直在遵循在 VB 中找到的示例 但似乎翻译可能不正确 pri
  • 列的 SQL MAX(包括其主键)

    Short 从下面的 sql select 中 我获取了 cart id 和该购物车中最高价值商品的值 SELECT CartItems cart id MAX ItemValues value FROM CartItems INNER J
  • 自动将范围内的值插入表中

    是否可以使用 MySQL 语句自动将值插入表中 即从 30 到 200 这是一个应该执行此操作的存储过程 CREATE PROCEDURE insert range BEGIN DECLARE i INT DEFAULT 30 WHILE
  • Mysql案例不工作

    SELECT SQL CALC FOUND ROWS a zn name AS zone name c name AS carrier name CASE type WHEN type 1 THEN General day ELSE Spe

随机推荐

  • Prisma:如何找到与 id 列表匹配的所有元素?

    我将 Prisma 与 NextJs 一起使用 在我的 API 中 我向后端发送与数据库中对象 ID 相对应的数字列表 举个例子 如果我收到列表 1 2 12 我想返回 id 为 1 2 或 12 的对象 这是更复杂的查询的一部分 排序 计
  • Solr:多语言索引和多值字段的 DIH?

    我有一个 MySQL 表 CREATE TABLE documents id INT NOT NULL AUTO INCREMENT language code CHAR 2 tags CHAR 30 text TEXT PRIMARY K
  • WebDriverException:未知错误:Runtime.executionContextCreated 具有无效的“上下文”:初始化 Chrome 浏览器时

    我正在尝试开始使用 selenium 并下载了 chrome 驱动程序并将其放入我的类路径中 我现在只是想获得标题 看看是否可以让它发挥作用 目前代码如下所示 import org openqa selenium WebDriver imp
  • 动态模块什么时候会出现类型加载异常?

    我有一个动态模块 当我的应用程序运行时 它会添加类型 该模块是通过以下代码创建的 var assemblyName new AssemblyName MyAssembly var assemblyBuilder AppDomain Curr
  • 如何在 check 子句中使用 CURDATE()?

    我尝试创建一个表 其中 dateFrom 和 dateTo 字段需要高于今天的日期 所以我这样使用 CHECK CREATE TABLE Booking hotelNo int 10 guestNo int 10 dateFrom date
  • Python,使用多处理进一步加速 cython 函数

    此处显示的代码经过简化 但会触发相同的 PicklingError 我知道关于什么可以腌制和什么不能腌制有很多讨论 但我确实从他们那里找到了解决方案 我编写了一个简单的 cython 脚本 具有以下功能 def pow2 int a ret
  • 如何在xlwings中选择整个工作表

    我在用xlwings 我想复制整个wb1 sheets 1 并粘贴到wb sheets 1 A4细胞 目前我必须设置一个非常大的单元格Z100000 有没有通用的方法来选择整个工作表而不是不安全区域A1 Z10000 import xlwi
  • 使用 AES256 和 Node.js 解密长度超过 15 个字符的输入数据时出错

    我正在使用 Node js 的加密模块和 AES 256 CBC 密码算法编写自己的安全类 但是 当我尝试解密从长度超过 15 个字符的输入数据加密的加密字符串时 失败并出现以下错误 crypto js 153 var ret this h
  • 了解自制程序和仅小桶的依赖关系

    我最近开始使用自制软件 我对当我在我的系统上酿造某些东西时会发生什么感到有点困惑 但它的酿造依赖项是仅桶的 这意味着它们链接在 usr local 例如 我正在安装vips 图像处理库 它的众多依赖项之一是 pixman Pixman 仅作
  • 流程图 x 轴时间问题... AARGHHH

    我很难将数据显示在以 x 轴作为时间线的流程图中 这是我的 JSON 文件的缩写副本 label ServiceReport data 1328983200 53 1328986800 53 1328990400 60 我已按照 Flot
  • Vue 路由器可以在开发服务器上运行,但不能在 vercel vite 上运行

    我正在使用 vite 制作一个项目 该项目使用 vue router 4 它工作得很好 但是当查看 vercel 或 netlify 上的链接时 我收到 404 错误 这是我的 index js 文件 路由器设置 import create
  • group_by 返回重复的键

    Python 3 6 我有一个简单的对象列表 for obj in obj ts print obj address 这告诉我 mwpJCSEEkphA1utQGA2Y9Vx8cufv85CgpR mwpJCSEEkphA1utQGA2Y9
  • JFreeChart:如何使系列不可见?

    我正在尝试使 ohlc 柱形图不可见 以便我可以仅保留移动平均线的窗口 这是两个系列 ohlc 柱和移动平均线 的代码 private static JFreeChart createChart OHLCDataset dataset JF
  • 不同的背景图像和左面板错误

    我使用的是 jQuery mobile 1 4 如果单击左侧面板 我的背景就会消失 我在奥马尔的帮助下解决了这个错误 非常感谢 Aim 主页应该有深色背景 所有其他页面应该有浅色背景 问题一 如果我单击主页上的面板 它就会起作用 如果我转到
  • 如何在React中使用animejs?

    我已经从 npm 安装了animejs 并导入了所需的文件 但是当在我的代码中添加anime code 时 它无法正常工作并显示错误 这是我所做的一个小例子 import React from react import anime from
  • Python message.content 不和谐机器人

    我正在努力让我的discord py当有人发送一些单词时 机器人会自动响应 但问题是该命令仅在该单词是句子中首先写入的情况下才有效 我希望我的机器人能够响应该消息 即使该单词位于某个句子的中间 如果这是可能的 我该怎么做 以下示例将执行您想
  • iOS 支持哪些字体格式?

    我想知道iOS支持哪些字体格式 我已经知道iOS支持TTF格式 它是否支持任何其他功能 例如 PFM 或 PMB 从 iOS 7 开始 支持 TTF 和 OTF 字体格式 您可以在应用程序中或通过配置文件分发这些字体 以使它们在系统范围内可
  • 如何将 boost::bind 与不可复制的参数一起使用,例如 boost::promise?

    某些 C 对象没有复制构造函数 但有移动构造函数 例如 boost promise 如何使用它们的移动构造函数绑定这些对象 include
  • 大地图寻路

    我正在创建一个带有 10 000 x 10 000 地图的游戏 我希望用户能够设置位置并让计算机立即找到最佳路径 然而 由于地图是10 000 x 10 000 有100 000 000个节点 并且通过诸如A 或Dijkstra之类的传统方
  • SQL GROUP_CONCAT 拆分为不同的列

    我进行了很多搜索 但没有找到解决我的问题的正确方法 我想做什么 我在 MySQL 中有 2 个表 国家 货币 我通过 CountryCurrency 将它们加入到一起 gt 由于多对多的关系 请参阅此示例 http sqlfiddle co