gpt4 book ai didi

mysql - 如何在 MySQL 中存储数组?

转载 作者:IT老高 更新时间:2023-10-28 12:51:35 31 4
gpt4 key购买 nike

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

<头>
身份证 名字 水果

fruits 列可以包含 null 或字符串数​​组,例如 ('apple', 'orange', 'banana') 或 ('strawberry') 等。第二个表是 Table果并有以下三列:

<头>
水果名称 颜色 价格
苹果 红色 2
橙色 橙色 3
----------- -------- -----

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

最佳答案

正确的做法是在查询中使用多个表并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 表有效地链接在一起,即,

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

关于mysql - 如何在 MySQL 中存储数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17371639/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com