我建立视图的语句如下:
CREATE OR REPLACE VIEW viewlog AS SELECT tbl1.iid, tbl2.title FROM `tbl1`,`tbl2` WHERE tbl1.iid = tbl2.iid;现在希望在iid前增加一个did int auto_increment!
CREATE OR REPLACE VIEW viewlog AS SELECT tbl1.iid, tbl2.title FROM `tbl1`,`tbl2` WHERE tbl1.iid = tbl2.iid;现在希望在iid前增加一个did int auto_increment!
首先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
然后插入tbl1的所有iid数据得到idCREATE OR REPLACE VIEW viewlog AS SELECT t.id,tbl1.iid, tbl2.title FROM `tbl1`,`tbl2` ,'t' WHERE tbl1.iid = tbl2.iid
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)
看成我的t表看明白了没
MySQL中的ROWNUM的实现 几种常见的方法。
”这部分放进一个临时表,然后视图取这个临时表吧
我需要这个did无论添加多少条记录,原来的还是原来的,新来的是一个新的唯一的数字!
能不能通过一种算法用tbl1.iid和tbl2.rid算出一个整数,使其能够唯一代表自己的记录呢?