首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用group by、count、group by、alias执行高级sql查询

使用group by、count、group by、alias执行高级sql查询
EN

Stack Overflow用户
提问于 2011-10-30 22:15:56
回答 2查看 166关注 0票数 2

我需要执行这个查询,就像(主猫和子猫)

以下是我的方案:

代码语言:javascript
代码运行次数:0
运行
复制
++++++++++++++++++++++++++++++++
+  id | Country     |  Parent  |
++++++++++++++++++++++++++++++++
+  1  |  India      |          |
++++++++++++++++++++++++++++++++
+  2  |  Usa        |          |
++++++++++++++++++++++++++++++++
+  3  | California  |   Usa    |
++++++++++++++++++++++++++++++++
+  4  | New York    |   Usa    |
++++++++++++++++++++++++++++++++
+  5  | New Delhi   |  India   |
++++++++++++++++++++++++++++++++
+  6  | France      |          |
++++++++++++++++++++++++++++++++

我想得到这样的结果:

代码语言:javascript
代码运行次数:0
运行
复制
+++++++++++++++++++++++++++++++++++++++++++++++++
+  id | Country     | Num |  Childs             |
+++++++++++++++++++++++++++++++++++++++++++++++++
+  1  |  India      |  1  |  New Delhi          |
+++++++++++++++++++++++++++++++++++++++++++++++++
+  2  | Usa         |  2  | California,New York |
+++++++++++++++++++++++++++++++++++++++++++++++++
+  3  | France      |  0  |                     |
+++++++++++++++++++++++++++++++++++++++++++++++++
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-30 22:21:05

试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT t1.id, t1.Country, 
    (SELECT COUNT(id) FROM world t2
     WHERE t2.Parent = t1.Country) as Num,
    (SELECT GROUP_CONCAT(Country) FROM world t3
     WHERE t3.Parent = t1.Country) as Childs
FROM world t1
WHERE t1.Parent IS NULL

IT的工作原理

我的查询由一个主部分和两个子查询(圆括号之间的部分)组成;您可以将一个子查询看作是在主查询中执行的一个常规查询,该查询返回到这个字段(列)。子查询可以与主查询交互,因为它们可以在SELECT或WHERE中使用主字段。

主要部分获取所有基础国家(没有父的国家)

代码语言:javascript
代码运行次数:0
运行
复制
   SELECT t1.id, t1.Country
   FROM world t1
   WHERE t1.Parent IS NULL

第一个子查询获取(对于main部分中的每个项目)父项目为main项目的国家的计数

代码语言:javascript
代码运行次数:0
运行
复制
SELECT COUNT(id) FROM world t2
WHERE t2.Parent = t1.Country

请注意,在WHERE子句中,我要求匹配子查询id与父id,因此我只获得与主条目相关的国家计数。

第二个子查询类似于第一个子查询,但使用GROUP_CONCAT函数返回一个不同的字段,以获得用逗号分隔的所有子国家。

票数 3
EN

Stack Overflow用户

发布于 2011-10-30 22:20:57

查看GROUP_CONCAT

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7945407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档