我有一张桌子女巫有一个带有以下记录的字段:
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
答案 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