我有一个名为 features 的字段,因为我将值存储为逗号分隔值,现在在选择时我需要获取逗号分隔值的相应名称
table1- feature
id feature_names
1 A
2 B
3 C
4 D
5 E
table2- car
id car feature_ids
1 Zen 2,3,4 // features = B,C,D
2 Benz 1,2 // features = A,B
3 Audi 4,5 // features = D,E
选择car表时如何获取逗号分隔值对应的名称?
最佳答案
重新设计您的数据库。
- 功能 - ID、名称
- 汽车 - ID、名称
- car_feature - car_id、feature_id
之后,您可以在查询中使用JOIN
。像这样的事情:
SELECT car.*, feature.name FROM car
JOIN car_feature ON car_feature.car_id = car.id
JOIN feature ON feature.id = car_feature.feature_id
您不应该像关系数据库中那样使用逗号分隔的字段。当然不是,如果您想根据该字段编写查询。即使它看起来有效,它很快就会变得极其低效且难以维护。
您的场景称为表之间的多对多关系 - 汽车可以具有任何功能,并且功能可以属于任何汽车。我概述的技术称为交叉引用表。我已经给出了所有关键字,供您搜索合适的 MySQL 教程和文章,例如:
关于php - 如何获取逗号分隔值对应的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12089858/