mysql - 如何在 MySQL 中将字符串列读取为列表?

标签 mysql sql regex

我有一张 table 。它有两列 class_idstudent .列学生是学生列表。学生列的数据类型为 varchar .我想编写一个 SQL 查询来返回行,其中学生列是较大列表的子集,例如 ["A", "B", "C", "D", "E", "F", "G"]

class_id      student
1             ["A","B"]
2             ["G","K","E"]
3             ["A","B","I"]
对于上面的例子,我的查询应该只返回一行 class_id 1 .
这是我到目前为止所拥有的
select * from A where student in ("A", "B", "C", "D", "E", "F", "G")
但它不起作用。

最佳答案

这并没有回答你的问题,但它确实显示了应该如何做到这一点。将您的数据写为:

class    student
 1        A
 1        B
 2        G
 2        K
 2        E
 3        A
 3        B
 3        I
现在,您可以回答诸如“A 正在参加哪些类(class)?”之类的问题。
SELECT UNIQUEROW class FROM A WHERE student='A'
和“A 和 B 一起上哪些类(class)?”
SELECT class, COUNT(*) AS count FROM A WHERE student IN ('A','B') GROUP BY class HAVING count = 2;

关于mysql - 如何在 MySQL 中将字符串列读取为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68249883/

相关文章:

mysql - Sql选择数据Mysql报错

regex - 如何在 VIM 中只小写带引号的字符串

r - 如何精确地 grep 一个单词

mysql - 连接表使值加倍

mysql - 如何在 MySQL 中使用子字符串分组

sql - 如何选择有序组的第一个和最后一个值?

php - JQUERY .load 不适用于 Firefox 中的 window.location

regex - 正则表达式匹配给定集合的任何子集?

php - MySQL PHP : Geting 0000-00-00 00:00:00 when using NOW() in a datetime column

mysql - 获取最大的数字并返回它自己的记录为 "representative of the group"