MySQL Query 请教

hyrongg 2010-01-22 05:22:44
Example code

create table t(idx int,cname varchar(30));
insert into t values(1,'a');
insert into t values(2,'b');
insert into t values(3,'c');



select * from t的结果这样

mysql> select * from t;
+------+-------+
| idx | cname |
+------+-------+
| 1 | a |
| 2 | b |
| 3 | c |
+------+-------+



怎么才能得到这种结果?

+------+-------+-------+
| idx | cname |countnum|
+------+-------+-------+
| 1 | a |3 |
| 2 | b |3 |
| 3 | c |3 |
+------+-------+-------+


countnum 是这张表的总记录数

SQL Server和oracle都可以用Row_number来得到,
MySQL 如何得到?

谢谢

...全文
72 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyrongg 2010-01-22
  • 打赏
  • 举报
回复
效率还可以,揭帖,

自己应该想到的,晕了
阿_布 2010-01-22
  • 打赏
  • 举报
回复
select t.idx,t.cname,count(*) from t;
hyrongg 2010-01-22
  • 打赏
  • 举报
回复
50多万,这样整效率如何?

我先测试一下,谢
ACMAIN_CHM 2010-01-22
  • 打赏
  • 举报
回复
或者这个效率会略有差异。

mysql> select t.*,a.countnum
-> from t,(select count(*) as countnum from t) a;
+------+-------+----------+
| idx | cname | countnum |
+------+-------+----------+
| 1 | a | 3 |
| 2 | b | 3 |
| 3 | c | 3 |
+------+-------+----------+
3 rows in set (0.00 sec)

mysql>
WWWWA 2010-01-22
  • 打赏
  • 举报
回复
mysql没有Row_number之类的函数,只有通过间接方法得到
WWWWA 2010-01-22
  • 打赏
  • 举报
回复
select *,(select count(*) from t) as countnum from t;
ACMAIN_CHM 2010-01-22
  • 打赏
  • 举报
回复
mysql> select * from t;
+------+-------+
| idx | cname |
+------+-------+
| 1 | a |
| 2 | b |
| 3 | c |
+------+-------+
3 rows in set (0.00 sec)

mysql> select *,(select count(*) from t) as countnum from t;
+------+-------+----------+
| idx | cname | countnum |
+------+-------+----------+
| 1 | a | 3 |
| 2 | b | 3 |
| 3 | c | 3 |
+------+-------+----------+
3 rows in set (0.02 sec)

mysql>

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧