带有COUNT帮助的SQL子查询

the*_*nso 37 sql

我有一个有效的SQL语句

SELECT * FROM eventsTable WHERE columnName='Business'
Run Code Online (Sandbox Code Playgroud)

我想将其添加为子查询...

COUNT(Business) AS row_count
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

cod*_*ger 63

这可能是最简单的方法,但不是最漂亮的方式:

SELECT *,
    (SELECT Count(*) FROM eventsTable WHERE columnName = 'Business') as RowCount
    FROM eventsTable
    WHERE columnName = 'Business'
Run Code Online (Sandbox Code Playgroud)

这也可以在不必使用的情况下工作 group by

SELECT *, COUNT(*) OVER () as RowCount
    FROM eventsTables
    WHERE columnName = 'Business'
Run Code Online (Sandbox Code Playgroud)

  • 请注意,SQL标准不支持`OVER`,并且并非在所有RDBMS中都可用(例如,[MySQL不支持](http://stackoverflow.com/questions/6292679/ mysql对子句使用正确的语法))。 (3认同)

eum*_*iro 10

你想获得行数吗?

SELECT columnName, COUNT(*) AS row_count
FROM eventsTable
WHERE columnName = 'Business'
GROUP BY columnName
Run Code Online (Sandbox Code Playgroud)

  • @Jim - 你可以使用`where`子句和`group by`.如果你想在使用`group by`时过滤聚合的结果,你需要使用`having`. (9认同)

rug*_*ugg 9

SELECT e.*,
       cnt.colCount 
FROM eventsTable e
INNER JOIN (
           select columnName,count(columnName) as colCount
           from eventsTable e2 
          group by columnName
           ) as cnt on cnt.columnName = e.columnName
WHERE e.columnName='Business'
Run Code Online (Sandbox Code Playgroud)

- 增加了空间