这是前一个修订过的问题。由于范围发生了变化,我决定开一个新问题。
这就是我想要实现的目标。
在“作者”列中列出书籍作者的姓氏,首先列出作者的姓氏,然后在作者名单之后(在逗号之后)列出第二个任何;如果有第三位作者,请将其放在第二位作者姓名之后。书籍作者的顺序列在 au_ord 栏目中(1 =第一作者,2 =第二作者,3 =第三作者)。
知道如何在MYSQL输出中实现这个目标吗?
这些是源表。所需的输出是这样的:
答案 0 :(得分:3)
这应该是您的第一个样本输出:
SELECT title_id, au_ord, au_lname
FROM title_authors
LEFT JOIN authors
ON authors.au_id = title_authors.au_id
WHERE title_id = 'TC7777'
ORDER BY au_ord;
这应该给出第二个:
SELECT title_id, GROUP_CONCAT(au_lname ORDER BY au_ord SEPARATOR ', ')
FROM title_authors
LEFT JOIN authors
ON authors.au_id = title_authors.au_id
GROUP BY title_id
HAVING title_id = 'TC7777';
答案 1 :(得分:2)
您只需要一个GROUP_CONCAT功能。
SELECT title_id, GROUP_CONCAT(au_lname ORDER BY au_ord)
FROM table
GROUP BY title_id
GROUP BY
子句对所有单独(不同)标题进行分组,其上的GROUP_CONCAT
连接其所有作者。这将列出所有标题及其相应的作者。如果au_lname
来自另一个表而不是来自title_id
表,那么您将必须使用适当的连接。我不确定你问题中的表名是什么。