我建立视图的语句如下:
CREATE OR REPLACE VIEW viewlog AS SELECT tbl1.iid, tbl2.title     FROM `tbl1`,`tbl2`  WHERE tbl1.iid = tbl2.iid;现在希望在iid前增加一个did int auto_increment!

解决方案 »

  1.   

    CREATE OR REPLACE VIEW viewlog AS SELECT tbl1.iid, tbl2.title    FROM `tbl1`,`tbl2`  WHERE tbl1.iid = tbl2.iid
    首先as select 中不能有参数或者变量 意思就是说不能用用户自定义变量 @aa=1 的办法view是一个结果集的快照,所以要从SELECT tbl1.iid, tbl2.title    FROM `tbl1`,`tbl2`  WHERE tbl1.iid = tbl2.iid
    入手类似 SELECT rownum as did,tbl1.iid, tbl2.title    FROM `tbl1`,`tbl2`  WHERE tbl1.iid = tbl2.iid
      

  2.   

    嗯,有道理!我就是需要view中能有一个唯一表示该记录的号!
      

  3.   

    或者创建一个新表t(id smallint auto_increment not null,iid int,primary key(did));
    然后插入tbl1的所有iid数据得到idCREATE OR REPLACE VIEW viewlog AS SELECT t.id,tbl1.iid, tbl2.title    FROM `tbl1`,`tbl2` ,'t' WHERE tbl1.iid = tbl2.iid 
      

  4.   

    在我的数据表`tbl1`和`tbl2`中,存在着两个字段tbl1.iid和tbl2.rid能够唯一表示SELECT tbl1.iid, tbl2.title    FROM `tbl1`,`tbl2`  WHERE tbl1.iid = tbl2.iid;  后结果集的记录,但我需要有一个字段能够唯一标示每一条记录,不一定非得是自增的!
      

  5.   

    不过这样太麻烦 
    mysql> select count(*) as did,t.id from t  left outer join  t as ttt on t.id>=tt
    t.id group by id;
    +-----+------+
    | did | id   |
    +-----+------+
    |   1 | 0001 |
    |   2 | 0002 |
    |   3 | 0003 |
    +-----+------+
    3 rows in set (0.00 sec)
    这样解决 t表数据
    mysql> select * from t;
    +------+
    | id   |
    +------+
    | 0001 |
    | 0002 |
    | 0003 |
    +------+
    3 rows in set (0.00 sec)
      

  6.   

    CREATE OR REPLACE VIEW viewlog AS SELECT t.id,tbl1.iid, tbl2.title    FROM `tbl1`,`tbl2` ,'t' WHERE tbl1.iid = tbl2.iid 我的意思是把 SELECT t.id,tbl1.iid, tbl2.title    FROM `tbl1`,`tbl2` ,'t' WHERE tbl1.iid = tbl2.iid 
    看成我的t表看明白了没
      

  7.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/04/20/4095531.aspx
    MySQL中的ROWNUM的实现 几种常见的方法。
      

  8.   

    考虑将“SELECT tbl1.iid, tbl2.title    FROM `tbl1`,`tbl2`  WHERE tbl1.iid = tbl2.iid; 
    ”这部分放进一个临时表,然后视图取这个临时表吧
      

  9.   

    嗯,确实非常棒!不过飓风兄弟还有没有更好的思路?我的表非常大,执行起来有点慢,还有就是表中的记录总是在更新,如果有新的记录进来,这个did是不是就会重新'洗牌'呢?
    我需要这个did无论添加多少条记录,原来的还是原来的,新来的是一个新的唯一的数字!
      

  10.   

    根据视图的性质来讲我上边的要求好似实现不了,不过既然 存在着两个字段tbl1.iid和tbl2.rid能够唯一表示SELECT tbl1.iid, tbl2.title    FROM `tbl1`,`tbl2`  WHERE tbl1.iid = tbl2.iid 后的结果集,
    能不能通过一种算法用tbl1.iid和tbl2.rid算出一个整数,使其能够唯一代表自己的记录呢?