MySQL - 单元格中的数组

标签 mysql

我的场景是,我有一个表来存储学校的类(class)。每个类都是表中的一行。其中的字段之一是提供该类(class)的类(class)周期。有些类(class)仅提供一个学期,有些提供多个学期,有些则每个学期提供。

在我包含数据(类(class)周期数据)的 CSV 中,它存储为逗号分隔值的列表,不带空格。例如,代数运行周期 1、2、3 和 4,因此在 CSV 中表示为“1,2,3,4”。

我的问题是,例如,当查询在第三个周期内运行的所有类时,诸如 SELECT * FROM `classes` WHERE `period` LIKE '1' 之类的内容将不会出现找到它。添加通配符 % 字符没有帮助,因为它还会选取在第 11 周期期间运行的类。

如何在单元格中存储这些多个值并查询它们?

编辑:这是我提供的所有数据。有 200 多个类,因此将所有数据重新格式化到另一个表中并使用 JOIN(这是执行此操作的正确方法)将非常耗时。我正在寻找一种方法来处理我已有的格式的数据。

最佳答案

最好通过创建类别和周期之间的关系表来完成此操作。

create table class_period(
  class_id int,
  period int
)

然后就可以查询周期为1的类(class)了

select * from classes c join class_period p on c.id = p.class_id where p.period = 1

关于MySQL - 单元格中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59160134/

相关文章:

java - 我可以获得 PreparedStatement 即将执行的完整查询吗?

mysql - 无法为 MySQL "root"用户 : An error occurred while setting the password for the MySQL administrative user 设置密码

mysql - 如何计算 SQL 中选定的行数

javascript - 打印 Html 输出在新窗口中打开

jquery - 使用 ajax 填充输入值(Laravel 6)

mysql inner join condition to ignore duplicate ids

mysql - 查询在 Mysql 中不起作用

mysql - 索引和唯一性/与主键的关系的约束

php - 多对多和急切加载 laravel

mysql - 在数据库中保存塞尔维亚拉丁字符