SQLite中的SELECT *,COUNT(*)

时间:2010-09-01 06:51:56

标签: sql sqlite

如果我在SQLite中执行标准查询:

SELECT * FROM my_table

我按预期获得了表格中的所有记录。如果我执行以下查询:

SELECT *, 1 FROM my_table

我按预期获得所有记录,最右边的列在所有记录中保持“1”。但是,如果我执行查询:

SELECT *, COUNT(*) FROM my_table

我只获得一行(最右边的列是正确的计数)。 为什么有这样的结果?我不是很擅长SQL,也许这种行为是预期的?这对我来说似乎很奇怪和不合逻辑:(。

4 个答案:

答案 0 :(得分:27)

SELECT *, COUNT(*) FROM my_table不是您想要的,并且它不是真正有效的SQL,您必须按所有不是聚合的列进行分组。

你想要像

这样的东西
SELECT somecolumn,someothercolumn, COUNT(*) 
   FROM my_table 
GROUP BY somecolumn,someothercolumn

答案 1 :(得分:15)

如果您想计算表格中的记录数量,只需运行:

    SELECT COUNT(*) FROM your_table;

答案 2 :(得分:9)

count(*)是一个聚合函数。需要对聚合函数进行分组以获得有意义的结果。您可以阅读:count columns group by

答案 3 :(得分:5)

如果您想要的是每行附加的表中的记录总数,您可以执行类似

的操作
SELECT *
  FROM my_table
  CROSS JOIN (SELECT COUNT(*) AS COUNT_OF_RECS_IN_MY_TABLE
                FROM MY_TABLE)

分享并享受。