Mysql爆炸功能

时间:2013-06-17 13:09:31

标签: mysql explode

我有一张桌子女巫有一个带有以下记录的字段:

1,2,3,4,5,6

我想问以下两件事:

1)如何在另一个表中创建外键?规则是: 对于字段`field_name`中逗号分隔的任何值,必须是other_table.field_id的记录

2)我怎样才能做到:SELECT explode(field) AS ex FROM table_name? 行的名称可以检索为ex[0]-->1, ex[1]-->2

1 个答案:

答案 0 :(得分:0)

虽然可以在逗号分隔的字段上进行连接(例如使用FIND_IN_SET),但我认为没有办法为外键执行此操作。

MySQL没有爆炸功能,你的想法似乎建议在每一行上有不同数量的列。

如果需要,您可以将它们分成不同的行,但它很难看。更多不使用逗号分隔字段的理由

SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(field, ',', 1 + units.i + tens.i * 10 + hundreds.i * 100), ',', -1)
FROM table_name
CROSS JOIN (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) units
CROSS JOIN (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) tens
CROSS JOIN (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) hundreds