我有一个未标准化的表,其中的列包含逗号分隔的列表,该列表是另一个表的外键:
+----------+-------------+ +--------------+-------+ | 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 | +---------+
有关更多信息,请访问http://amitbrothers.blogspot.in/2014/03/mysql-split-comma- separated-list-into.html