数据结构如下:
+--------------+---------+------+-----+---------+----------------+
| 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,请问,我的要求可以做到吗?

解决方案 »

  1.   

    MYSQL中没有这种字段类型。 你可以通过你自己的程序或者触发器来实现。
      

  2.   

    sql server里面有row_number()over()
      

  3.   

    可否简单写一下这个触发器,如果insrt  就触发??
      

  4.   


    你可以先自己参考手册中的例子写一下,有什么具体问题再把你自己的代码贴出来。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  5.   


    这个row_number()over()是个窗口排序函数 所以呢也只是在执行DML操作的时候有用
    对于DDL操作无用 也就是你不能建立这样性质的字段 MSSQL也不可以mysql当然也不可以 我也没听过这样的字段 这样的需求估计只能触发器来实现了~
      

  6.   

    +--------+------------+-------+-------+-------+-------+----------+-------+---------+
    | 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开始增加