gpt4 book ai didi

mysql - 选择元素分组依据的总数

转载 作者:行者123 更新时间:2023-11-28 23:35:00 24 4
gpt4 key购买 nike

我有一个动物园。

动物园表

id | name | 

动物表

id | zoo_id | name |    type
1 1 Horse 0
2 1 Elephant 0
3 1 Parrot 1
4 2 Whale 2
5 2 Fox 0
6 1 Snake 3

我想选择所有动物园数据以及该动物园的动物总数该动物园中存在的所有动物类型

MySQL

SELECT zoo.id as zooid,zoo.name,
(SELECT COUNT(*) FROM animal WHERE animal.zoo_id = zoo.id) as total_animals
FROM zoo;

但是我如何才能那个动物园中存在的所有动物类型

预期结果

zooid | name |  total | available_types
1 USAZOO 4 0 1 3
2 UKZOO 2 0 2

因为我要选择很多 Zoo,所以性能很重要

最佳答案

您可以使用 GROUP_CONCAT :

SELECT zoo.id as zooid,zoo.name,
(SELECT COUNT(*) FROM animal WHERE animal.zoo_id = zoo.id) as total_animals,
group_concat(type separator ' ')
FROM zoo
GROUP BY zoo.id,zoo.name

我想你也需要这个来命名动物园,你是如何得到你的名字结果的?无论如何-

SELECT zoo.id as zooid,
group_concat(zoo.name separator ' ') as zoo_name,
(SELECT COUNT(*) FROM animal WHERE animal.zoo_id = zoo.id) as total_animals,
group_concat(type separator ' ')
FROM zoo
GROUP BY zoo.id

你应该用一个连接来做:

SELECT zoo.id as zooid,
group_concat(zoo.name separator ' ') as zoo_name,
COUNT(*) as total_animals,
group_concat(type separator ' ')
FROM zoo
INNER JOIN animals
ON animal.zoo_id = zoo.id
GROUP BY zoo.id

关于mysql - 选择元素分组依据的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com