选择找到的行数以及表格中的其他列的最简单方法是什么?我发现的唯一方法是使用子查询进行连接,但我认为它比这样一个简单的任务应该更加资源...
我正在寻找的结果是
SELECT lots_of_rows, count(*)
FROM table
with some magic, so it doesn't reduce everything in one row.
f1 f2 f3 rowcount
----------------------
a b c 3
a c e 3
a r g 3
或类似的东西。
答案 0 :(得分:0)
您可以在没有子查询的情况下执行此操作,最后一行将保留所有空值以及字段rowcount
中的总行数
SELECT lots_of_rows, count(*) as rowcount
FROM atable
GROUP BY atable.primary_key WITH ROLLUP
另一种选择可能是:
SELECT lots_of_rows FROM atable;
SELECT FOUND_ROWS() as rowcount;
第二个查询会立即返回,因为它只是从第一个查询中提供了行数。
请参阅:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
答案 1 :(得分:0)
这是一种使用内联视图的方法,即使您的表没有主键也可以使用。通过使用内联视图,您不必使用连接。
注意:这是在Oracle上完成的,但我相信SQL应该适用于MySQL或者只需要很少的调整。
CREATE TABLE t1 (f1 CHAR(1), f2 CHAR(1), f3 CHAR(3));
INSERT INTO t1 VALUES ('a','b','c');
INSERT INTO t1 VALUES ('a','c','e');
INSERT INTO t1 VALUES ('a','r','g');
SELECT a.f1
, a.f2
, a.f3
, b.cnt
FROM t1 a
, (SELECT COUNT(*) cnt from t1) b
结果:
F1 F2 F3 CNT
1 a b c 3
2 a c e 3
3 a r g 3