【问题标题】:INNER JOIN and COUNT in the same query同一个查询中的 INNER JOIN 和 COUNT
【发布时间】:2015-05-29 18:09:26
【问题描述】:

我无法将 INNER JOIN 和 COUNT 放在同一个查询中。

表格是:

TABLE STREETS

ID | STREET_NAME
------------------------
1  | Elm street
2  | Some other street
3  | Unknown street
4  | Killer street
5  | Dead-end street




TABLE ACCIDENTS_STREETS

STREET_ID | ACCIDENT_ID
-----------------------
   2      | 4
   2      | 7
   2      | 2
   2      | 1
   5      | 3

我想知道发生事故最多的街道名称。

这是 COUNT 个:

SELECT TOP 1 COUNT(STREET_ID) AS dangerous_street FROM ACCIDENTS_STREETS GROUP BY STREET_ID ORDER BY dangerous_street DESC

如何在此处添加 INNER JOIN 以仅获取街道名称?

感谢任何建议!

【问题讨论】:

  • @a_horse_with_no_name,来自发布的 SQL 代码......看起来像 SQL Server。
  • HSQL 数据库管理器

标签: sql join jdbc count hsqldb


【解决方案1】:

以下应该可以工作

SELECT TOP 1 S.STREET_NAME,COUNT(a.*) AS dangerous_street 
FROM ACCIDENTS_STREETS A 
inner Join STREET S on S.ID = A.STREET_ID 
GROUP BY S.STREET_NAME ORDER BY dangerous_street DESC

【讨论】:

  • 哦,就这么简单……这就是我要找的,非常感谢!
【解决方案2】:

试试这个...

加入streets 表后,您必须使用聚合函数来获取结果集中的名称

SELECT 
TOP 1 COUNT(STREET_ID) AS dangerous_street
, min( STREET_NAME) dangerous_STREET_NAME
FROM ACCIDENTS_STREETS acc
inner join STREETS str
on acc.STREET_ID=str.id
GROUP BY STREET_ID 
ORDER BY dangerous_street DESC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2016-04-10
    • 2021-04-01
    • 1970-01-01
    • 2015-03-19
    • 2011-04-19
    • 2011-08-18
    相关资源
    最近更新 更多