gpt4 book ai didi

mysql - SQL 查询将相关记录列出到单个字段中的值数组

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:15 26 4
gpt4 key购买 nike

我需要来自两个表的结果集,其中一个表有一个名为 Subjects 的字段和一个值数组(1、2、3 等)。这些值将与 Subjects 表中的 PK 相匹配。我需要用主题名称替换数值。

给定两个表:

学生们:

ID:100,FNAME:Steve,SUBJECTS:2,3
ID:101,FNAME:Billy,SUBJECTS:1,2

主题:

ID:1,SUBJECT:Math
ID:2,SUBJECT:Reading
ID:3,SUBJECT:Spelling

需要 SQL 语法来生成:

ID:100,FNAME:Steve,SUBJECTS:Reading, Spelling
ID:101,FNAME:Billy,SUBJECTS:Math, Reading

最佳答案

SELECT Students.ID, Students.FNAME, GROUP_CONCAT(Subjects.SUBJECT) 
FROM Students, Subjects
WHERE Students.SUBJECTS LIKE CONCAT('%',Subjects.ID,'%')
GROUP BY Students.ID;

see my sqlfidde

请注意,这是非常低效的。您真的应该创建一个交叉引用表并使用普通的 JOINS

正如 Gordon Linoff 指出的那样,使用至少对 MySql 有效的 find_in_set 可能会更好:

SELECT Students.ID, Students.FNAME, GROUP_CONCAT(Subjects.SUBJECT separator ', ') 
FROM Students join
Subjects
on find_in_set(subjects.id, students.subjects) > 0
GROUP BY Students.ID;

improved fiddle

关于mysql - SQL 查询将相关记录列出到单个字段中的值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243913/

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