我在 MySQL 中有两个表。表人具有以下列:
该fruits列可能包含 null 或字符串数组,如 (‘apple’, ‘orange’, ‘banana’) 或 (‘strawberry’) 等。第二个表是 Table Fruit 并具有以下三列:
fruits
那么我应该如何设计fruits第一个表中的列,以便它可以保存从fruit_name第二个表中的列中获取值的字符串数组?既然MySQL中没有数组数据类型,那我该怎么办呢?
fruit_name
正确的方法是JOIN在查询中使用多个表和它们。
JOIN
例如:
CREATE TABLE person ( `id` INT NOT NULL PRIMARY KEY, `name` VARCHAR(50) ); CREATE TABLE fruits ( `fruit_name` VARCHAR(20) NOT NULL PRIMARY KEY, `color` VARCHAR(20), `price` INT ); CREATE TABLE person_fruit ( `person_id` INT NOT NULL, `fruit_name` VARCHAR(20) NOT NULL, PRIMARY KEY(`person_id`, `fruit_name`) );
该person_fruit表包含与一个人相关联的每个水果的一行,并将表person和fruits表有效地链接在一起,IE
person_fruit
person
1 | "banana" 1 | "apple" 1 | "orange" 2 | "straberry" 2 | "banana" 2 | "apple"
当您想检索一个人及其所有水果时,您可以执行以下操作:
SELECT p.*, f.* FROM person p INNER JOIN person_fruit pf ON pf.person_id = p.id INNER JOIN fruits f ON f.fruit_name = pf.fruit_name