您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL选择定界数据

MySQL选择定界数据

正如上面草莓的评论所暗示的,有一种方法可以做到这一点,但是它是如此丑陋。这就像用胶带完成昂贵的厨房装修一样。您应该对以这种方式设计数据库的人感到不满。

SELECT g.id_group, GROUP_CONCAT(n.Names SEPARATOR ' ') AS Names
FROM groups AS g JOIN names AS n
  ON FIND_IN_SET(n.id_names, REPLACE(g.Name, '|', ','))
GROUP BY g.id_group;

输出,在MysqL 5.6上测试:

+----------+---------------+
| id_group | Names         |
+----------+---------------+
|        1 | Joe Mary Bill |
|        2 | Fred Mary     |
|        3 | Jack Joe      |
+----------+---------------+

更好的解决方案是创建第三个表,其中您将组中的每个单独成员单独存储在一行中。也就是说,每组多行。

CREATE TABLE group_name (
  id_group INT NOT NULL,
  id_name INT NOT NULL,
  PRIMARY KEY (id_group, id_name)
);

然后,您可以以更简单的方式进行查询,并且有机会创建索引以使查询变得非常快。

SELECT id_group, GROUP_CONCAT(names SEPARATOR ' ') AS names
FROM groups
JOIN group_name USING (id_group)
JOIN names USING (id_name)
MySQL 2022/1/1 18:52:45 有310人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶