表关联查询时,因为有一个中括号,导致查出来的数据不全,如何在不改变原表数据的情况下(删除中括号),查询出所有的数据

表b结构如下

MySQL

表U结构如下
MySQL

想要将爱好id的名称全部展示出来
语句如下
SELECT
u.id,
u.名称,
GROUP_CONCAT( b.名称 SEPARATOR “ - “ ) AS 爱好名称
FROM
u
LEFT JOIN b ON find_in_set( b.id, u.爱好 Id )
GROUP BY
u.id;
结果如下

表关联查询时,因为有一个中括号,导致查出来的数据不全,如何在不改变原表数据的情况下(删除中括号),查询出所有的数据

因为爱好id字段中有一个中括号,导致查询出来的结果少挨着中括号的id 第一个和最后一个,请问在数据不改动的情况下,如何查出全部的数据

最佳答案

LEFT JOIN b ON find_in_set (b.id, TRIM(TRAILING ‘]’ FROM TRIM(LEADING ‘[‘ FROM u.fav_id))),做两次trim删除左右中括号,应该还有别的方法吧,效率不清楚只测了一下可以展示,replace应该也行

1年前 评论
qzy135 (楼主) 1年前
伽蓝幻梦 (作者) 1年前
伽蓝幻梦 (作者) 1年前
qzy135 (楼主) 1年前
讨论数量: 7

如果想不改数据的情况查,建议使用php或其他编程语言查出数据。 或者使用sql的话,改成 逗号分隔的id,比较好。

1年前 评论
qzy135 (楼主) 1年前

LEFT JOIN b ON find_in_set (b.id, TRIM(TRAILING ‘]’ FROM TRIM(LEADING ‘[‘ FROM u.fav_id))),做两次trim删除左右中括号,应该还有别的方法吧,效率不清楚只测了一下可以展示,replace应该也行

1年前 评论
qzy135 (楼主) 1年前
伽蓝幻梦 (作者) 1年前
伽蓝幻梦 (作者) 1年前
qzy135 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!