将count(*)作为select查询的一部分是错误的

时间:2011-04-15 12:09:45

标签: mysql sql

select id, first_name, count(*) from users;

users表包含10个条目,但上面的select查询只显示一行。混合计数(*)作为上述查询的一部分是错误的吗?

7 个答案:

答案 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文档以查看它是如何使用的。