【问题标题】:SQL query: need help on subquerySQL 查询:在子查询方面需要帮助
【发布时间】:2023-10-19 04:36:02
【问题描述】:

问题如下:

有 2 个相关表(我提供了一些示例值以使其简化):

Circuit
--------
id    name
1      a
2      b
3      c

Circuit_Dependent
-----------------
id    depend_id
1     2
1     3

表是相关的,第二个表说明与电路 ID 的关系。
情况是需要查询的:
1) 列出具有 circuit_dependency 的电路名称 预期输出:

name   dependent_name
a      b
a      c

2) 列出电路名称和计数(依赖项数)
预期输出:

name   count
a      2

感谢帮助。

【问题讨论】:

  • 如果这是家庭作业,请添加适当的标签
  • 这是面试问题之一。
  • 我希望你没有使用这里的答案进行工作面试 - 看起来很阴暗。
  • 没办法...我在面试后发布了这个问题,我想知道答案,以便为下次做好准备。

标签: sql database join subquery


【解决方案1】:

第一个查询可能是:

SELECT c1.`name`, c2.`name`
FROM Circuit_Dependent cd INNER JOIN Circuit c1 
    ON cd.id = c1.id    
INNER JOIN Circuit c2 
    ON cd.depend_id = c2.id

第二个查询可能是这个:

SELECT c.`name`, COUNT(DISTINCT cd.depend_id) AS count 
FROM circuit c INNER JOIN Circuit_Dependent cd
    ON c.id = cd.id
GROUP BY c.id

【讨论】:

  • 我认为您的第二个查询不会执行,您不能在选择中引用不属于聚合的列。 (即您选择名称,但它不是您的组的一部分,也不是聚合函数)
  • @CAbbott:你试过了吗?好吧,它有效:) 无论如何,OP 可以用GROUP BY c.name 更改它。谢谢:)
  • 我只是使用 SQL Server,因为 OP 没有指定数据库。 :)
  • @CAbbott: 哦,好的.. 我使用 MySql 也是出于同样的原因 :)