我有这样的数据
通过使用以下查询
select ABSTRACTS_ITEM._id,Name
from ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT
where
ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID
and
ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID
现在,我想展示这样的数据
等等。。我也知道它可以通过GROUP_CONCAT
函数来实现。所以,我尝试了这个
SELECT ABSTRACTS_ITEM._id,
GROUP_CONCAT(ABSTRACT_AUTHOR.NAME) FROM
(select ABSTRACTS_ITEM._id,
Name
from
ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT
where
ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID
and
ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID)
但是,它显示了我的错误。那么,我在这里做错了什么。什么是正确的程序来实现呢?
2条答案
按热度按时间nkoocmlb1#
使用聚合函数时需要添加
GROUP BY
子句。也可以使用JOIN
来连接表。所以试试这个:
请参阅此示例SQLFiddle
你刚才试的几乎是对的。你只需要在最后加上
GROUP BY
子句。但是第一个子句更好。7y4bm7vi2#
下面是我对这个封闭式问题的回答(它有一个很好的展示)。SQL group results by row
必须向所选字段添加聚合函数。
你想要的是:带有自定义分隔符','的GROUP_CONCAT
请参阅相关MySQL文档:https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html
您的选择查询将如下所示:
然后,您将获得所需的输出:
| id_地点|地名|植物名称|
| - ------|- ------|- ------|
| 1个|纽约|兰花郁金香|
| 第二章|伦敦|蔷薇、兰花、郁金香|
| 三个|巴黎|蔷薇、百合、紫罗兰|
下面是一个DB Fiddle(MySQL 8.0)来验证这一点:https://www.db-fiddle.com/f/sSU7G4kKEaxsLMNweAtLSA/2