0

我有一个表女巫有以下记录的字段:

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

4

1 回答 1

0

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

MySQL 没有explode 功能,您的想法似乎建议每行有不同数量的列。

如有必要,您可以将它们分成不同的行,但这很丑陋。还有更多不使用逗号分隔字段的好理由

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
于 2013-06-17T13:20:51.000 回答