可以在 MySQL 查询中拆分/分解字段吗?

2023-11-30

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

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

The courseNames字段包含以逗号分隔的课程名称字符串,例如“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'
)

The courseId这里的字段是client.courseNames 字段中课程名称的索引。所以,如果客户的courseNames是“AB01,AB02,AB03”,并且courseId的招生人数是2,那么该学生位于 AB03。

有没有办法可以对这些包含课程名称的表进行单一选择?请记住,会有来自不同客户的学生(因此有不同的课程名称,并非所有课程名称都是连续的,例如:“NW01,NW03”)

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

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

到目前为止,我想将这些逗号分隔的列表保留在我的 SQL 数据库中 - 清楚所有警告!

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以在 MySQL 查询中拆分/分解字段吗? 的相关文章

  • 使用 JOIN 和 UNION 合并不同表中的记录

    我需要创建一个查询来组合两个表中的数据 我认为可能是 JOIN 和 UNION 的组合 在此示例中 我需要列出状态处于活动状态的所有姓名 仅一次 并将他们的葡萄酒 苏打水 晚餐 甜点和水果偏好组合起来 按姓名排序 我不确定单独的 JOIN
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • 无效的 PDO 查询不会返回错误

    下面的第二条 SQL 语句在 phpMyAdmin 中返回错误 SET num 2000040 INSERT INTO artikel artikel nr lieferant nr bezeichnung 1 bezeichnung 1
  • 如何获取mysql中一条记录的大小

    如果表包含 TEXT 或 BLOB 类型的字段 如何获取 MySql 中记录的大小 是否可以使用sql语句获取记录或表的大小 要计算字符串或 blob 的大小 以字节为单位 请使用LENGTH YourColumn http dev mys
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht
  • 导入 .sql 文件时出现错误 3554

    第 318 行出现错误 3554 HY000 对系统表 mysql innodb index stats 的访问被拒绝 操作失败 退出代码为 1 11 27 20 C Users VELOXSHOP Downloads dumpfilena
  • 使用 PHP 运行 mysqldump 生成的空文件

    我不断收到运行时生成的空文件 command mysqldump opt h localhost u username p password dbname gt backup 2009 04 15 09 57 13 sql command
  • .hasMany 调用的内容不是 Sequelize.Model 的子类

    我正在尝试在两个模型之间引用外键 但我收到此错误 throw new Error this name hasMany called with something that s not a subclass of Sequelize Mode
  • MySQL聚合函数问题

    在下面的例子中 为什么min 查询返回结果 但是max 查询没有 mysql gt create table t id int a int Query OK 0 rows affected 0 10 sec mysql gt insert
  • ON DELETE CASCADE 与 Symfony 和 Doctrine 的多对多关系

    我想要与 Symfony 和 Doctrine 建立简单的多对多关系 这实际上是一个单向的一对多关联 可以通过连接表映射为文档表明 http doctrine orm readthedocs org en latest reference
  • 将所有 PHP 错误输出到数据库而不是 error_log

    是否可以将所有 PHP 错误写入 MySQL 而不是标准的 error log 文件 我想如果我从头开始编写自己的错误处理程序 这是可能的 但我有很多遗留代码 理想情况下我只需进行 1 个全局更改即可 这可以做到吗 我认为如果不构建自己的错
  • 具有继承性的 JPA 映射视图和表

    我有一个无法更改的数据库设计 数据库具有具有一对一关系的表和视图 这些视图包含一些从表中计算出的额外信息 相关信息是行的状态 为此关系设置的权限是视图是只读的 因为表具有所有可用的 CRUD 操作 JPA 是选择映射到此设置的 ORM 该应
  • 可变字段数的数据库结构设计

    对于某种库存系统 用户可以创建一个item type它具有某些属性 现在每种类型的属性数量都是可变的 我应该如何使用 DBStructure 来解决这个问题 只需制作 X 份量propertyX领域 还是有其他方法可以以这种方式实现灵活性
  • 在mysql中使用smallint数据类型而不是int真的可以节省内存吗?

    在 mysql 表中使用 Smallint 数据类型而不是常规 int 是否真的可以提高内存使用率 无论如何 硬件不会为所有数据分配完整的 64 位字大小吗 如果它不分配完整的字 那么我们是否会看到由于必须从内存中分配的 64 位字中解析出
  • 从多个表插入表

    嘿 我有一个连接表 连接两个不相关的表 两个表都有ID的 我需要选择ID从每个表中使用WHERE具有不同的值 例如这就是我的看法 INSERT INTO c aID bID VALUES SELECT a ID WHERE a Name M
  • MYSQL 连接结果集在 IN () 期间在 where 子句中擦除结果?

    重磅编辑 最初的问题是基于对 IN 如何处理联接结果集中的列的误解 我认为 IN some join some column 会将结果列视为列表并循环遍历每一行 事实证明它只查看第一行 因此 改编后的问题是 MySQL 中是否有任何东西可以
  • 如何查询两个日期之间的“日期”字段是字符串?

    我在 MySQL 数据库中有一个表 其中有一个名为 日期 的字段 问题是日期的格式为 DD MM YYYY 因此我无法将其作为 DATE 类型字段上传到 MySQL 相反 字段类型是字符串 考虑到这一点 我如何编写能够产生这种效果的查询 S
  • 当用户单击链接时如何在表中创建新字段

    我的表格如下图所示 In order to insert data from this form into table I coded this supplier info supplier name POST supplier name
  • 检查 Laravel 模型是否已保存或查询是否已执行

    我见过很多人使用这种方式来检查 Laravel 模型是否已保存 所以现在我想知道这是否是一种安全的方法 我还可以检查下面的查询是否像这样执行 检查模型是否已保存 Eg myModel new User myModel gt firstnam
  • 使用 C++ 连接器的 C++ mysql 连接 bad_alloc

    尝试建立一个简单的 mysql 连接 但得到一个bad alloc即使查看类似的帖子 我也不知道如何解决这个问题 这是我的代码 include

随机推荐

  • 在 MVC3 中将 ListBox 与模型绑定

    我的模型是 public class SiteConfig public SiteConfig public int IdSiteConfig get set public string Name get set public byte S
  • 在审核表单中添加自定义字段

    我期待在审核表单中创建自定义字段 电子邮件 ID 和一个下拉列表 我已经尝试过这个 但没有保存数据 仅保存字段 应用程序 代码 核心 法师 评论 模型 Mysql4 Review php protected function afterSa
  • 如何使用与用户定义函数同名的 MATLAB 工具箱函数

    我遇到了问题findpeaks函数 该函数位于信号处理工具箱中 并且该程序还有它的另一个版本 用户定义函数 我需要调用信号处理工具箱中的 on 而不是用户定义的函数 而且由于多种原因我无法重命名用户定义的函数 谁能帮我调用工具箱函数 MAT
  • 解析正数和负数的字符串,Javascript

    所以我正在研究 d3 中制作的标签云示例 http www jasondavies com wordcloud http 3A 2F 2Fsearch twitter com 2Fsearch json 3Frpp 3D100 26q 3D
  • 使用 jQuery 动态创建链接

    我正在尝试使用 jQuery 在 blockquote 元素中创建一个链接 我现在正处于这个阶段 var pullQuote span pull quote each function var this this hrefLink http
  • 如何找到 Redshift 中访问次数最多的表?

    我们正在将实时数据传输到 Redshift 瓶颈是没有可以并发运行的表加载 目前 我们每 15 分钟运行超过 1000 个负载 但我们希望根据用户使用这些表的频率来减少这个数字 请建议我们如何在 Redshift 中获取此信息 This v
  • 获取奇数长度回文

    我试图找到最长的奇数长度回文 但我编写的代码没有给我完整的回文 只是其中的一部分 任何帮助都会很棒 def get odd palindrome at s index str int gt str gt get odd palindrome
  • 使用 firestore 安全规则中的替换功能

    我正在努力应对 Firestore 安全规则 我想检查需要替换功能的值 即电子邮件地址 我可以在一般安全文档中找到一些文档 但这似乎不适用于 Firestore 例如这有效 allow write if resource data memb
  • 如何获取/跟踪 ASP.NET 传出响应文本

    我的服务器似乎有时会向网络客户端返回错误的 html 我在 VS 2012 中使用 asp net 4 在 IIS Express 上进行调试 为了调试这个问题 我想跟踪asp net发送的html in the Global asax P
  • 如何从回历日期转换为公历日期,反之亦然

    我正在寻找一种方法来计算例如从现在到特定日期有多少天 并且我可以用它来确定我是否处于特定时间段 例如 Muharram 5 天 我已经找了 10 多个小时了 我发现的最好的东西是 HijrahDate 库 java time chrono
  • 更新 conda 后如何从终端提示符中删除 (base)

    更新 miniconda3 后 每当我打开终端时 它都会在我的用户名和主机前面显示 base 在这个回答帖子里https askubuntu com a 1113206 315699建议使用 conda config set changep
  • 在 Python 中格式化驱动器

    我正在尝试制作一个 Python 3 3 程序来格式化 Windows 中的驱动器 例如 SD 卡或 USB 记忆棒 我在这里尝试了代码 http bytes com topic python answers 537724 formatti
  • 从 Silverlight 4 调用 HTTPS-WCF 服务时出现安全错误

    我创建了一个简单的 WCF 服务 我希望可以通过 https 访问它 WCF 服务使用 UserNamePasswordValidator customBinding 和 UserNameOverTransport 作为身份验证模式 我在
  • IPython模块

    我有一些具有冗余功能的 IPython 脚本 我想将常见功能重构为一个模块 并将该模块包含在现有脚本中 问题是它不能成为 python 模块 因为代码使用 Ipython 的语言扩展 等 是否可以制作一个具有 IPython 代码的模块并将
  • 如何使用 django-mptt 创建嵌套评论系统

    我正在开发一个简单的博客 并尝试为每个帖子实现一个嵌套评论系统 我创建了评论模型 它通过 Django 管理页面运行良好 我不知道如何创建用于发布新评论和回复的表单 这是我到目前为止所拥有的 模型 py class Post models
  • Flutter Firebase.signInWithGoogle 方法未找到

    我正在尝试在我的 Flutter 应用程序中添加 Google 身份验证 但是我的Android studio找不到该方法登录Google under Firebase身份验证班级 我的意思是说当我写 FirebaseAuth 时 登录Go
  • ASP.NET Core JWT 和声明

    我对 ASP NET Core 和声明中的 JWT 身份验证有疑问 因为我不知道我是否正确理解了所有内容 当我在 ASP NET 中创建 JWT 令牌时 我添加了一些声明 其中一些可以自定义 当带有 JWT 令牌的请求从客户端发送到 API
  • 如何调整位图大小

    determine padding for scanlines int padding 4 bi biWidth sizeof RGBTRIPLE 4 4 iterate over infile s scanlines for int i
  • 通过地址访问 C 中的位域

    不允许使用其地址访问 C 中的位字段背后的原因是什么 是否因为它可能不是未系统字对齐的地址 或者因为获取字节内的位地址没有意义 因为这种类型的指针算术会很尴尬 位没有地址 这就是为什么你不能通过地址引用它们 寻址的粒度是char 我猜原因是
  • 可以在 MySQL 查询中拆分/分解字段吗?

    我必须创建一份关于一些学生完成情况的报告 每个学生都属于一个客户 这是表格 针对这个问题进行了简化 CREATE TABLE clients clientId int 10 unsigned NOT NULL auto increment