mysql - 一行内匹配不同值 II

标签 mysql sql

这是上一个问题的修订版。由于范围已更改,我决定提出一个新问题。

这就是我想要实现的。

在“作者”栏中列出该书作者的姓氏,首先列出作者的姓氏,然后(逗号后)是第二位作者的姓氏,如果任何;如果有第三作者,则放在第二作者姓名之后。一本书的作者顺序列在 au_ord 列中(1=第一作者,2=第二作者,3=第三作者)。

知道如何在 MYSQL 输出中实现这一点吗?

enter image description here

那些是源表。所需的输出是这样的:

enter image description here

最佳答案

这应该给出您的第一个示例输出:

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';

关于mysql - 一行内匹配不同值 II,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132543/

相关文章:

sql - PostgreSQL 如何创建数据库或模式的副本?

mysql - 对两个表进行查询计算

mysql - 如何使用 UTC 格式的 CURRENT_TIMESTAMP 而不是 LOCALTIME 将记录保存在 MYSQL 数据库中?

php - Laravel 模型/ View 关系

mysql - Xeround 停产 - 2 周寻找替代品

android - 关于在ListView上显示的高效查询

mysql - SQL用户表设计问题

php - SQLSTATE[HY000] : General error

PHP。在注册步骤中使用地理编码谷歌API

php - 致命异常 : AsyncTask #1 and android. view.WindowLeaked