select id, first_name, count(*) from users;
users表包含10个条目,但上面的select查询只显示一行。混合计数(*)作为上述查询的一部分是错误的吗?
答案 0 :(得分:2)
因为你在查询的选择部分使用聚合函数,
返回10条记录,只需要id和查询中的first_name。
EG:
SELECT id, first_Name
FROM users
如果您想获得表中记录的计数,那么您可以使用
SELECT (Count(id))
FROM [users]
答案 1 :(得分:2)
COUNT是一个聚合的函数。您无法将其混合到常规查询中。
如果您想收到十个条目,只需进行正常选择:
SELECT id, name FROM users;
并获取条目数:
SELECT COUNT(id) FROM users;
答案 2 :(得分:2)
这不是“错误”,但如果没有“group by”子句则没有意义 - 大多数数据库都会拒绝该查询,因为如果你包含其他列,聚合函数应该包含一个group by。
答案 3 :(得分:1)
不确定你想要实现的目标究竟是什么?
select id, first_name,(select count(*) from users) AS usercount from users;
会给每个用户和总计数,但不知道为什么你会想要它。
答案 4 :(得分:1)
select id, first_name from users,(select count(*) as total from users) as t;
答案 5 :(得分:1)
COUNT
是汇总功能,除非与分组结合使用,否则它将始终为您计算表中的所有记录。
如果将它与普通查询结合使用,则在决定最终输出时将优先考虑,因为它会返回1。
如果你想要返回所有10条记录,你应该写 -
select id,first_name from users
答案 6 :(得分:0)
如果需要表中的行数,可以使用MySQL的SQL_CALC_FOUND_ROWS子句。检查MySQL文档以查看它是如何使用的。