mysql查询一个字段内对应多条id的数据

想问一下各位,我现在的查询,查主表中的类型id对应的名字,但是这主表中的某一条数据可以对应多个类型,所以我写了比如(1,2),
请问查询的时候,如何将多个类型的名字都显示到对应查询结果中,想要的效果就是,比如第二条查出来的数据,我想让他pun_id对应的数据为(1,2),
pun_name数据为,处罚1,处罚2,请问怎么写这个sql

img

img

假设有表 pun,包含id和name字段,假设有如下3行数据
id name
1 处罚a
2 处罚b
3 处罚c
有表cases,其中有id和pun_id字段
假设有如下数据
id pun_id
1 1,2
2 2,3
那么
SELECT cases.id, GROUP_CONCAT(pun.name ORDER BY pun.id SEPARATOR ',') AS names
FROM cases
INNER JOIN pun ON FIND_IN_SET(pun.id, cases.pun_id)
GROUP BY cases.id;

返回
id  names
1   处罚a,处罚b
2   处罚b,处罚c

【以下回答由 GPT 生成】

在MySQL中查询一个字段内对应多条ID的数据可以使用GROUP_CONCAT函数和GROUP BY语句来实现。以下是一个示例的SQL查询语句:

SELECT pun_id, GROUP_CONCAT(pun_name) AS pun_name
FROM your_table
GROUP BY pun_id;

其中,your_table是你的主表的表名,pun_id是主表中的某个字段对应的多个ID的字段,pun_name是对应的类型名称字段。

这个查询语句将根据pun_id进行分组,并使用GROUP_CONCAT函数将每个分组内的pun_name字段值连接为一个字符串。结果中的pun_id列将显示不同的pun_id值,pun_name列将显示以逗号分隔的对应的pun_name值。

如果你想要同时显示pun_id和pun_name的值对应关系,可以将查询结果的pun_id和pun_name拼接在一起作为一个字段。以下是修改后的SQL查询语句:

SELECT CONCAT('pun_id为(', GROUP_CONCAT(pun_id), '),pun_name为(', GROUP_CONCAT(pun_name), ')') AS result
FROM your_table
GROUP BY pun_id;

这个查询语句将使用CONCAT函数将pun_id和pun_name的结果拼接在一起,并使用GROUP_CONCAT函数将每个分组内的拼接结果连接为一个字符串。结果将显示pun_id和pun_name值对应关系的字符串。

希望以上内容对你有帮助。如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^