group_concat()函数常与关键字 group by 一起使用,能够将分组后指定的字段值都显示出来。
根据题目的描述和提供的选项,我们需要选择一个 SQL 语句来输出如图 3-110 所示的内容。我们需要理解每个选项的功能,并分析哪个选项能够正确地输出所需的结果。
选项分析:
1. **A: select stuname, group_concat(id) from student;**
- 这个语句会将所有学生的 `id` 进行合并,并且不会根据 `stuname` 分组。输出的结果会是一行,包含所有学生的 `id` 和一个 `stuname`。
2. **B: select stuname, group_concat(id) from student group by stuname;**
- 这个语句会根据 `stuname` 进行分组,并将每组内的 `id` 进行合并。输出的结果会是每个学生姓名对应其所有的 `id`,这符合题目的要求。
3. **C: select stuname, id from student group by stuname;**
- 这个语句会根据 `stuname` 进行分组,但由于 `id` 不是聚合函数,MySQL 通常会返回每组中的第一个 `id`。这可能导致丢失信息,不符合题目的要求。
4. **D: select stuname, id from student;**
- 这个语句会输出所有学生的 `stuname` 和 `id`,但不会进行任何分组或合并,输出的结果将是每个学生一行,不符合题目的要求。
综上所述,正确答案是 **B: select stuname, group_concat(id) from student group by stuname;**。
这个语句会根据 `stuname` 进行分组,并将每组内的 `id` 合并在一起,形成一个逗号分隔的字符串,这与图 3-110 所示的内容相符。