这是上一个问题的修订问题。由于范围发生了变化,我决定提出一个新问题。
这就是我想要实现的。
在“作者”列中列出图书作者的姓氏,首先列出作者的姓氏,然后(在逗号之后)如果有的话,将列出第二位作者的姓氏;如果有第三作者,则在第二作者姓名之后。一本书的作者顺序列在au_ord列中(1=第一作者,2=第二作者,3=第三作者)。
知道如何在 MYSQL 输出中实现这一点吗?
这些是源表。所需的输出是这样的:
这应该会给出您的第一个示例输出:
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';
您只需要一个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
表,那么您将必须使用适当的连接。我不确定您的问题中的表名是什么。