select id, first_name, count(*) from users;
users表包含10个条目,但上面的select查询只显示单个行。将count(*)作为上述查询的一部分混合是否是错误的?将count(*)作为选择查询的一部分是错误的
select id, first_name, count(*) from users;
users表包含10个条目,但上面的select查询只显示单个行。将count(*)作为上述查询的一部分混合是否是错误的?将count(*)作为选择查询的一部分是错误的
COUNT是聚集功能。你不能将它混合到你的普通查询中。
如果你想收到十个条目只是做一个正常的选择:
SELECT id, name FROM users;
,并获得条目数:
SELECT COUNT(id) FROM users;
其监守你正在使用的查询的选择部分聚合函数,
返回10条记录,你只需要ID,并在FIRST_NAME查询。
EG:
SELECT id, first_Name
FROM users
,如果你想获得该表中的记录数,那么你可以使用
SELECT (Count(id))
FROM [users]
(在'function'之前加'aggregate'一词,我给你一个+1 cookie) - 授予 – 2011-04-15 12:14:02
@Jeff Parker - 按要求:) – WraithNath 2011-04-15 12:15:17
不知道你想达到什么有了这个?
select id, first_name,(select count(*) from users) AS usercount from users;
会给每个个人用户和总数,但再次,不知道为什么你会想要它。
这不是“错误”,但没有“group by”子句就没有意义 - 大多数数据库都会拒绝该查询,因为如果包含其他列,聚合函数应包含一个组。
select id, first_name from users,(select count(*) as total from users) as t;
COUNT
是聚合函数,它会永远给你算表中的所有记录,除非结合使用组。
如果结合正常的查询使用它,那么它会决定最终的输出在你的情况下优先返回1.
如果你想返回所有10条记录,你应该只写 -
select id,first_name from users
如果您需要表中的行数,则可以使用MySQL的SQL_CALC_FOUND_ROWS子句。检查MySQL文档以查看它是如何使用的。
任何理由为什么这必须在一个查询中完成? – 2011-04-15 12:12:48
在MySQL中缺少窗口集合函数会强制您读取两次用户表。 – 2011-04-15 12:38:10