我有一个未标准化的表,其中的列包含逗号分隔的列表,该列表是另一个表的外键:
+----------+-------------+ +--------------+-------+ | part_id | material | | material_id | name | +----------+-------------+ +--------------+-------+ | 339 | 1.2mm;1.6mm | | 1 | 1.2mm | | 970 | 1.6mm | | 2 | 1.6mm | +----------+-------------+ +--------------+-------+ 我想将此数据读入不提供过程语言的搜索引擎中。
那么,有没有一种方法,要么就这一栏中加入或该数据运行查询插入相应的条目到一个新的表?结果数据应如下所示:
+---------+-------------+ | part_id | material_id | +---------+-------------+ | 339 | 1 | | 339 | 2 | | 970 | 2 | +---------+-------------+ 如果DBMS支持返回表的函数,但MySQL显然不支持,我可以想到一个解决方案。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在MySQL中,可以通过以下方式实现
SELECT id, length FROM vehicles WHERE id IN ( 117, 148, 126)
+---------------+ | id | length | +---------------+ | 117 | 25 | | 126 | 8 | | 148 | 10 | +---------------+
SELECT id,vehicle_ids FROM load_plan_configs WHERE load_plan_configs.id =42
+---------------------+ | id | vehicle_ids | +---------------------+ | 42 | 117, 148, 126 | +---------------------+ 现在要获取逗号分隔的vehicle_ids的长度,请使用以下查询
Output
SELECT length FROM vehicles, load_plan_configs
WHERE load_plan_configs.id = 42 AND FIND_IN_SET( vehicles.id, load_plan_configs.vehicle_ids )
+---------+ | length | +---------+ | 25 | | 8 | | 10 | +---------+来源:stack overflow