如果我在SQLite中执行标准查询:
SELECT * FROM my_table
我按预期获得了表格中的所有记录。如果我执行以下查询:
SELECT *, 1 FROM my_table
我按预期获得所有记录,最右边的列在所有记录中保持“1”。但是,如果我执行查询:
SELECT *, COUNT(*) FROM my_table
我只获得一行(最右边的列是正确的计数)。 为什么有这样的结果?我不是很擅长SQL,也许这种行为是预期的?这对我来说似乎很奇怪和不合逻辑:(。
答案 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)
分享并享受。