首页 > 解决方案 > 如何从数据库的属性中派生特定元素并将它们连接到主键?

问题描述

CREATE TABLE `user` (
  `user_id` int NOT NULL,
  `name` varchar(50) NOT NULL,
  `hobby` varchar(50) #optional, hobby is always written in hashtags 
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

INSERT INTO `user` (`user_id`, `name`, `hobby`)
('148723', 'max', 'random text #football'),
('578294', 'john', 'random text2'),
...

我想创建一个只有 ID 和爱好的表,如下所示:

('148723', '#football')
...

有什么方法可以在 MySQL 中做到这一点,还是我必须使用 Python?提前致谢。

标签: pythonmysqldatabase

解决方案


你必须创建一个新表es。user_and_hobby

CREATE TABLE `user_and_hobby` (
  `user_id` int NOT NULL,
  `hobby` varchar(50) 
);

然后从另一个表es导入数据。user

INSERT INTO `user_and_hobby` (`user_id`, `hobby`)
    SELECT user_id, concat('#',SUBSTRING_INDEX(hobby, "#", -1))
    FROM user
    WHERE hobby LIKE "%#%"

有关插入+选择的更多示例,您可以在此处找到。

  • CONCAT#在字符串之前添加(文档)。
  • SUBSTRING_INDEX选择不带 # 的标签词(文档)。
  • LIKE删除没有标签的爱好

我想您只有一个爱好标签,如果不是这种情况,请输入所有可能的情况来修改问题


推荐阅读