gpt4 book ai didi

mysql - 您可以拆分/分解 MySQL 查询中的字段吗?

转载 作者:IT老高 更新时间:2023-10-28 12:58:02 25 4
gpt4 key购买 nike

我必须针对一些学生的完成情况创建一份报告。每个学生都属于一个客户。以下是表格(针对此问题进行了简化)。

CREATE TABLE  `clients` (
`clientId` int(10) unsigned NOT NULL auto_increment,
`clientName` varchar(100) NOT NULL default '',
`courseNames` varchar(255) NOT NULL default ''
)

courseNames 字段包含以逗号分隔的类(class)名称字符串,例如“AB01,AB02,AB03”

CREATE TABLE  `clientenrols` (
`clientEnrolId` int(10) unsigned NOT NULL auto_increment,
`studentId` int(10) unsigned NOT NULL default '0',
`courseId` tinyint(3) unsigned NOT NULL default '0'
)

这里的courseId字段是clients.courseNames字段中类(class)名称的索引。所以,如果客户的courseNames是“AB01,AB02,AB03”,并且注册的courseId2,那么学生在AB03.

有没有一种方法可以让我在这些包含类(class)名称的表格上进行单选?请记住,会有来自不同客户的学生(因此有不同的类(class)名称,并非所有名称都是连续的,例如:“NW01,NW03”)

基本上,如果我可以拆分该字段并从结果数组中返回一个元素,那将是我正在寻找的。这就是我在神奇伪代码中的意思:

SELECT e.`studentId`, SPLIT(",", c.`courseNames`)[e.`courseId`]
FROM ...

最佳答案

直到现在,我都想将这些逗号分隔的列表保留在我的 SQL 数据库中 - 了解所有警告!

我一直认为它们优于查找表(它提供了一种标准化数据库的方法)。经过几天的拒绝,我看到了曙光:

  • 在一个字段中使用逗号分隔值时,使用查找表不会比那些丑陋的字符串操作产生更多的代码。
  • 查找表允许使用本地数字格式,因此不会比那些 csv 字段大。但它更小。
  • 在高级语言代码(SQL 和 PHP)中所涉及的字符串操作很少,但与使用整数数组相比成本很高。
  • 数据库并不意味着人类可读,而且像我一样,由于它们的可读性/可直接编辑性而试图坚持结构是很愚蠢的。

总之,MySQL中没有原生的SPLIT()函数是有原因的。

关于mysql - 您可以拆分/分解 MySQL 查询中的字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/471914/

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