如果我在SQLite中执行标准查询:
SELECT * FROM my_table
Run Code Online (Sandbox Code Playgroud)
我按预期在表格中获得了所有记录.如果我执行以下查询:
SELECT *, 1 FROM my_table
Run Code Online (Sandbox Code Playgroud)
我按预期获得所有记录,最右边的列在所有记录中保持"1".但是,如果我执行查询:
SELECT *, COUNT(*) FROM my_table
Run Code Online (Sandbox Code Playgroud)
我只获得一行(最右边的列是正确的计数).为什么有这样的结果?我在SQL方面不是很好,可能会有这种行为吗?这对我来说似乎很奇怪和不合逻辑:(.
nos*_*nos 28
SELECT *, COUNT(*) FROM my_table
不是你想要的,它不是真正有效的SQL,你必须按所有不是聚合的列进行分组.
你想要的东西
SELECT somecolumn,someothercolumn, COUNT(*)
FROM my_table
GROUP BY somecolumn,someothercolumn
Run Code Online (Sandbox Code Playgroud)
raf*_*sti 15
如果要计算表中的记录数,只需运行:
SELECT COUNT(*) FROM your_table;
Run Code Online (Sandbox Code Playgroud)
如果您想要的是附加到每一行的表中的记录总数,您可以执行类似的操作
SELECT *
FROM my_table
CROSS JOIN (SELECT COUNT(*) AS COUNT_OF_RECS_IN_MY_TABLE
FROM MY_TABLE)
Run Code Online (Sandbox Code Playgroud)
分享和享受.