這裏有一些選擇
1)選擇和順序由包括課程名稱它 - 它會在每行的當然
SELECT course.name, student.name
FROM student
INNER JOIN course
ON student.courseid=course.courseid
ORDER BY course.name;
將返回
重複學生
您會在您的表示層中進行縮進,例如每次課程名稱更改時都會縮進。
2)您可以使用GROUP_CONCAT
對COURSE_NAME所有學生合併到單個列的分組
SELECT course.name, GROUP_CONCAT(student.name) AS Students
FROM student
INNER JOIN course
ON student.courseid=course.courseid
GROUP BY course.name;
返回
Course Students
BCA abc, def, pqr
MCA stu, ijk
BTECH xyz
編輯,再我只想一列
那麼,您可以將課程名稱和學生姓名與UNION
成一列,並使用排序黑客聯繫學生like this。事實上,你甚至可以添加空格來獲得縮進效果。但是這是解決了錯誤的問題 - 這種格式是表示層,不應該在Sql IMO中完成。
SELECT Name
FROM
(
SELECT course.coursename AS Name, course.coursename AS Course, 1 As RowType
FROM course
UNION ALL
SELECT CONCAT(' ', student.name), course.coursename, 2 AS RowType
FROM student
INNER JOIN course
ON student.courseid=course.courseid
) x
ORDER BY Course, RowType;
返回
BCA
abc
def
pqr
BTECH
xyz
MCA
ijk
stu
這樣的縮進最好留給表現層(例如,在網頁上)。你可以做的是在選擇中包含'coursename',並按順序排列。屏幕將需要分組和縮進。 – StuartLC
您還需要選擇'course.coursename',而不僅僅是'student.name'。所以你會有'SELECT course.coursename,學生。名稱「等 – Kusalananda
爲什麼你不爲每個課程的group_concat'student.name'? – Beginner