验证中...
gistfile1.md
Raw Copy

###select 子句中子查询有多行怎么办?


当我们查询一对多的关联表时,可能会遇到这样的问题:

比如有两个表: teacher 和 student

teacher:

id name gender
1 张老师
2 李老师
3 王老师

student:

id teacher_id name
1 1 小红
2 1 小兰
3 2 小绿
4 2 小紫
5 3 小黑

如果我们想一条SQL查询所有老师的信息以及每个老师所对应的的学生姓名(效果如下),应该怎么办?

teacher_name teacher_gender students
张老师 小红,小兰
李老师 小绿,小紫
王老师 小黑

由于select子句中做子查询只允许返回一行数据,所以我们考虑拼接子查询的多行数据(一个老师对应多个学生)

select
	teacher.name,
	teacher.gender,
	(select array_to_string(array(select
    	student.name
    from
    	student
    where student.teacher_id = teacher.id
    ),',')) as students
from 
	teacher

Comment list( 0 )

You need to Sign in for post a comment

Help Search