如果我有这张桌子:
perma_table:
+-------+-------+
| A | B |
+-------+-------+
| a | 5 |
| c | 7 |
| a | 8 |
| b | 9 |
| a | 7 |
| c | 6 |
| a | 8 |
+-------+-------+
我想制作
inserted_table:
+-------+-------+-------+
| A | B | C |
+-------+-------+-------+
| a | 5 | 1 |
| a | 7 | 2 |
| a | 8 | 3 |
| a | 8 | 4 |
| b | 9 | 5 |
| c | 6 | 6 |
| c | 7 | 7 |
+-------+-------+-------+
怎么做?
即时通讯使用代码点火器(php),这是所有这个方法可以通过使用查询来完成,而不使用CI活动记录/ php函数?
答案 0 :(得分:1)
您可以使用单个查询
来完成CREATE TABLE inserted_table as
SELECT A,B,@num:=@num+1 AS C
FROM perma_table,(select @num:=0) temp
ORDER BY A,B;
答案 1 :(得分:1)
如果您只想要一个查询来完成它,它就这么简单: 正常插入,插入后即可选择 SELECT * FROM表ORDER BY A,B,C ASC
但是如果你想保留这个订单,没有任何选择没有订单,你可以创建一个视图或新表,如
CREATE VIEW inserted_table AS
SELECT A, B, @id = @id+1 AS C FROM perma_table
ORDER BY A,B;
或新表(无视图)
CREATE TABLE inserted_table AS
SELECT A, B, @id = @id+1 AS C FROM perma_table
ORDER BY A,B;
使用视图,你可以在perma_table上插入任何值,inserted_table将自动生成,如果你选择第二种情况,你可以在编辑perma_table时重新创建表格