#
# Table structure for table 'ta'
#CREATE TABLE `ta` (
  `id` tinyint(3) unsigned NOT NULL default '0',
  `score` tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `name` (`score`)
) TYPE=MyISAM CHARSET=latin1;#
# Table structure for table 'tb'
#CREATE TABLE `tb` (
  `id` tinyint(3) unsigned NOT NULL default '0',
  `score` tinyint(4) NOT NULL default '0',
  `score_no` tinyint(4) default NULL,
  PRIMARY KEY  (`id`),
  KEY `name` (`score`)
) TYPE=MyISAM CHARSET=latin1;
#
# Dumping data for table 'ta'
#INSERT INTO `ta` VALUES("1", "67");
INSERT INTO `ta` VALUES("2", "89");
INSERT INTO `ta` VALUES("3", "90");
INSERT INTO `ta` VALUES("4", "78");
INSERT INTO `ta` VALUES("5", "89");
INSERT INTO `ta` VALUES("6", "87");mysql> SET @id = 0;
Query OK, 0 rows affected (0.00 sec)mysql> SELECT id,score,@id :=@id+1 AS score_no FROM ta ORDER BY score;
+----+-------+----------+
| id | score | score_no |
+----+-------+----------+
|  1 |    67 |        1 |
|  4 |    78 |        2 |
|  6 |    87 |        3 |
|  2 |    89 |        4 |
|  5 |    89 |        5 |
|  3 |    90 |        6 |
+----+-------+----------+
6 rows in set (0.00 sec)INSERT INTO tb SELECT id,score,@id :=@id+1 AS score_no FROM ta ORDER BY score;
在网页中输入记录保存在 tA 表中,
然后对其处理将结果插入到结果表中,INSERT INTO 结果表 SELECT ........

解决方案 »

  1.   

    我用的是mysql,它支持变量,这种操作吗@id :=@id+1
      

  2.   

    6.1.4 用户变量MySQL 支持连接特定(connection-specific)的用户变量,用 @variablename 句法表示。一个变量名可以由当前字符集中包含的文字与数字字符以及 “_”、“$” 和 “.” 组成。缺少的字符集为 ISO-8859-1 Latin1;这可以通过改变 mysqld 的--default-character-set 的选项来改变。查看章节 4.6.1 用于数据和排序的字符集。 变量不必被初始化。缺省地,他们的值为 NULL 并可以存储一个整数、实数或字符串值。当连接线程退出时,这个线程的所有变量将会自动地被释放。 你可以通过 SET 句法来设置一个变量: SET @variable= { integer expression | real expression | string expression }
    [,@variable= ...].在语句中除了 SET 之外还可以直接为一个变量赋值。然而在这各情况下,赋值操作符为 := 而不是 =,因为 = 在非 SET 语句中是用于比较的: mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
    +----------------------+------+------+------+
    | @t1:=(@t2:=1)+@t3:=4 | @t1  | @t2  | @t3  |
    +----------------------+------+------+------+
    |                    5 |    5 |    1 |    4 |
    +----------------------+------+------+------+用户变量可以用于表达式所允许的任何地方。注意,这在数字必须明确指定的语境中并不适用,例如,在 SELECT 的 LIMIT 子句中或一个 LOAD DATA 语句的 IGNORE number LINES 的子句中。注意:在一个 SELECT 语句中,各个表达式只有在它被送到客户端时才能被求值。这就意味着,在 HAVING、GROUP BY 或 ORDER BY 子句中,你不能使用一个包含在 SELECT 部份所设置变量的表达式。例如:下面的语句将不会按预期的运作: mysql> SELECT (@aa:=id) AS a, (@aa+3) AS b FROM table_name HAVING b=5;原因是因为 @aa 不会是当前行的值,而是前一个符合条件的行的 id 值。 规则就是在同一语句中决不赋值 和 使用同一个变量。