数据库层次结构如下
学生姓名
分配给每个学生的费用清单
分配给每项费用的奖学金名单
作为结构,预期输出为
学名费->奖学金1,奖学金2
Karan-1.Annual Fee->Economic Scholarship,Incapable Scholarship,2.Monthly Fee
但我得到的
学名费->奖学金1,学名费->奖学金2
Karan-1.Annual Fee->Economic Scholarship,1.Annual Fee->Incapable Scholarship,2.Monthly Fee
这里怎么了?虽然我在筑巢 CONCAT
,但未获得预期输出
CONCAT(student.en_ttl,'-',GROUP_CONCAT(DISTINCT fee.id,'.',fee.en_ttl,
COALESCE(CONCAT('->',sch.en_ttl),''))) AS fee
sql小提琴
1条答案
按热度按时间4bbkushb1#
你基本上需要两个层次的
GROUP BY
. 所以,我们需要在这里使用一个派生表。第一个子查询将在fee
; 然后第二级将在student
.另外,在mysql的较新版本(并且符合ansi sql)中,您需要确保
SELECT
子句应该在GROUP BY
条款。查询
结果
db fiddle视图