小编典典

如何在 MySQL 中存储数组?

all

我在 MySQL 中有两个表。表人具有以下列:

id name fruits

fruits列可能包含 null 或字符串数组,如 (‘apple’, ‘orange’, ‘banana’) 或 (‘strawberry’) 等。第二个表是 Table Fruit 并具有以下三列:

fruit_name color price
apple red 2
orange orange 3
----------- -------- ------

那么我应该如何设计fruits第一个表中的列,以便它可以保存从fruit_name第二个表中的列中获取值的字符串数组?既然MySQL中没有数组数据类型,那我该怎么办呢?


阅读 55

收藏
2022-08-07

共1个答案

小编典典

正确的方法是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表包含与一个人相关联的每个水果的一行,并将表personfruits表有效地链接在一起,IE

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
2022-08-07