有一张表
aa   800
bb   700
cc   600
我要查询变成
aa 800 1
bb 700 2
cc 600 3请问mysql中有类似mssql的select identity(1,1)的自增长函数吗?谢谢

解决方案 »

  1.   

    没有,可以用变量累加来实现
    set @i=0;
    select @i:=@i+1 AS ID,f1,f2 from tt
      

  2.   

    orset @i=0;
    create table newtt as select @i:=@i+1 AS ID,f1,f2 from tt
      

  3.   

    不能吗?
    DELIMITER $$CREATE PROCEDURE `test`.`test`()
      BEGIN
    set @i=0;
    select *,@i:=@i+1 AS ID from msg;
        END$$DELIMITER ;
    MYSQL5。1.17下测试通过
      

  4.   

    DELIMITER $$DROP PROCEDURE IF EXISTS `test`.`test`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
    BEGIN
    set @i=0;
    select *,@i:=@i+1 AS ID from msg;
        END$$DELIMITER ;
      

  5.   

    mysql没有rownum()这种函数。只能通过变通的方法实现。select a.col1,a.col2,count(*)
    from yourTable a inner join b on a.col2<=b.col2
    group by a.col1
    order by 3
      

  6.   

     CREATE TABLE t (a INT AUTO_INCREMENT PRIMARY KEY, b INT);