我在MySQL中有两个表.Table Person有以下列:

id name fruits

fruits列可以包含null或字符串数组,如('apple'、'orange'、'banana')、或('草莓')等.第二个表是table Fruit,有以下三列:

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

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

推荐答案

正确的方法是使用多个表并在查询中使用它们.

例如:

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相关问答推荐

如何使RST(*)在巨大的数据集上快速执行?

Hibernate 不创建表'

为什么歌曲详细信息未显示在 Liked.handlebars 视图中?

如何在sql中包含0作为计数?

为什么用PyMySQL构建的json返回结果会出现重复?

为什么Mysql会根据查询参数改变查询执行计划?

列出每年最多产的三位作家

如何计算每行的剩余金额?

如何创建将行转换为列的 MySQL 查询?

Django中的MYSQL查询等效

使用 JOIN 计算列中的所有值

MySQL 每组最大 n 只适用于多行

从 SQL 中的左连接和内连接中减go 计数

提高mysql导入速度

PHP,MySQL 错误:列计数与第 1 行的值计数不匹配

这是将表单数据插入 MySQL 数据库的安全方法吗?

org.hibernate.InstantiationException:没有实体的默认构造函数::principal.Cliente

MySQL - 如何 Select 值在数组中的行?

如何在 MySQL 中为用户设置默认架构

使用 Java 通过 SSH 连接到远程 MySQL 数据库