如何给分组数据增加一个id?

fnzh001 2010-08-02 08:16:57
数据结构如下:
+--------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+----------------+
| symbol | char(8) | YES | | NULL | |
| date | date | YES | | NULL | |
| open | double | YES | | NULL | |
| high | double | YES | | NULL | |
| low | double | YES | | NULL | |
| close | double | YES | | NULL | |
| vol | double | YES | | NULL | |
| adj | double | YES | | NULL | |
| id | int(10) | NO | PRI | NULL | auto_increment |
+--------------+---------+------+-----+---------+----------------+
我现在需要对这个表按照symbol分组,分组后,每个symbol组按照date排序,asc排序完成后,增加一个新字段new_id,这个新字段对相当是每个symbol组的索引或者主键,自动增加1,当每个symbol组增加新记录后,这个new_id会自动增加1,注意这个new_id不通于id,id对整个数据表的任何symbol组起作用,只要这个表有记录增加进来,id的值就会增加1;new—id就不同,它是每个组内的,每个组内的id,请问,我的要求可以做到吗?
...全文
251 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fnzh001 2010-08-02
  • 打赏
  • 举报
回复
+--------+------------+-------+-------+-------+-------+----------+-------+---------+
| symbol | date | open | high | low | close | vol | adj | id |
+--------+------------+-------+-------+-------+-------+----------+-------+---------+
| YHOO | 2009-01-30 | 11.86 | 12.15 | 11.51 | 11.73 | 21508900 | 11.73 | 7976767 |
| YHOO | 2009-01-29 | 12.02 | 12.24 | 11.73 | 11.74 | 22124100 | 11.74 | 7976768 |
| YHOO | 2009-01-28 | 12.23 | 12.38 | 11.92 | 12.24 | 35686800 | 12.24 | 7976769 |
| YHOO | 2009-01-27 | 11.2 | 11.37 | 10.85 | 11.34 | 33708200 | 11.34 | 7976770 |
| YHOO | 2009-01-26 | 11.26 | 11.28 | 10.81 | 11.17 | 16469800 | 11.17 | 7976771 |
| YHOO | 2009-01-23 | 10.9 | 11.55 | 10.86 | 11.32 | 15864000 | 11.32 | 7976772 |
| YHOO | 2009-01-22 | 11.35 | 11.51 | 10.9 | 11.28 | 17201700 | 11.28 | 7976773 |
| YHOO | 2009-01-21 | 11.17 | 11.59 | 11.08 | 11.59 | 15892200 | 11.59 | 7976774 |
| YHOO | 2009-01-20 | 11.72 | 11.8 | 11.01 | 11.01 | 18692000 | 11.01 | 7976775 |
| YHOO | 2009-01-16 | 11.87 | 11.97 | 11.44 | 11.59 | 24783700 | 11.59 | 7976776 |
| YHOO | 2009-01-15 | 12.32 | 12.35 | 11.22 | 11.61 | 25247500 | 11.61 | 7976777 |
| YHOO | 2009-01-14 | 12.26 | 12.53 | 11.81 | 12.41 | 23595200 | 12.41 | 7976778 |
| YHOO | 2009-01-13 | 12.09 | 12.79 | 11.78 | 12.1 | 25720400 | 12.1 | 7976779 |
| YHOO | 2009-01-12 | 13.09 | 13.1 | 12.08 | 12.22 | 19976900 | 12.22 | 7976780 |
| YHOO | 2009-01-09 | 13.42 | 13.56 | 12.9 | 13.13 | 19281000 | 13.13 | 7976781 |
| YHOO | 2009-01-08 | 12.37 | 13.07 | 12.31 | 13.07 | 13929800 | 13.07 | 7976782 |
| YHOO | 2009-01-07 | 12.71 | 13.16 | 12.45 | 12.71 | 24995900 | 12.71 | 7976783 |
| YHOO | 2009-01-06 | 12.96 | 13.24 | 12.88 | 13 | 10056000 | 13 | 7976784 |
| YHOO | 2009-01-05 | 12.72 | 13.01 | 12.39 | 12.86 | 11989900 | 12.86 | 7976785 |
| YHOO | 2009-01-02 | 12.17 | 12.85 | 12.12 | 12.85 | 9514600 | 12.85 | 7976786 |
+--------+------------+-------+-------+-------+-------+----------+-------+---------+
上面那个表格,我想新增加一个字段new_id,使它从1开始增加
feixianxxx 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xmx2009 的回复:]

sql server里面有row_number()over()
[/Quote]

这个row_number()over()是个窗口排序函数 所以呢也只是在执行DML操作的时候有用
对于DDL操作无用 也就是你不能建立这样性质的字段 MSSQL也不可以

mysql当然也不可以 我也没听过这样的字段

这样的需求估计只能触发器来实现了~
ACMAIN_CHM 2010-08-02
  • 打赏
  • 举报
回复
[Quote]可否简单写一下这个触发器,如果insrt 就触发??[/Quote]

你可以先自己参考手册中的例子写一下,有什么具体问题再把你自己的代码贴出来。

MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
fnzh001 2010-08-02
  • 打赏
  • 举报
回复
可否简单写一下这个触发器,如果insrt 就触发??
xmx2009 2010-08-02
  • 打赏
  • 举报
回复
sql server里面有row_number()over()
ACMAIN_CHM 2010-08-02
  • 打赏
  • 举报
回复
MYSQL中没有这种字段类型。 你可以通过你自己的程序或者触发器来实现。
feixianxxx 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fnzh001 的回复:]
+--------+------------+-------+-------+-------+-------+----------+-------+---------+
| symbol | date | open | high | low | close | vol | adj | id |
+--------+------------+-------+-------+-------+---……
[/Quote]
你的需求 自动增加没有这样的功能

只能用触发器写

57,062

社区成员

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

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