在表中我们有一个ID列,每当插入新记录时,应该包括ID中的连续no,但该列也没有自动增量。 我需要以下查询的答案
INSERT INTO STUDENT(ID) VALUES(SELECT MAX(ID)+1 FROM STUDENT );
提前致谢..
答案 0 :(得分:0)
你应该能够用你所拥有的东西做你正在做的事情。我看到的最大问题是如果表中没有记录,该怎么做,我用case
语句处理过。
Auto_Increment
对于此类问题会更好,因为它可以保证id。此代码可能存在这样的问题:连接A已选择最大ID但未插入它,但是,虽然连接B可能已经选择并插入了连接A但尚未插入的ID。您仍然可以像这样编码,只需要能够处理问题。
示例代码:
Insert Into Student(ID)
SELECT case when not exists(select * from student) then 1
else MAX(ID) + 1 END FROM STUDENT;
更大的样本:http://sqlfiddle.com/#!2/dae11/1
[SQL Fiddle][1]
**MySQL 5.5.32 Schema Setup**:
create table Student(
ID int
);
Insert Into Student(ID)
SELECT case when not exists(select * from student) then 1
else MAX(ID) + 1 END FROM STUDENT;
Insert Into Student(ID)
SELECT case when not exists(select * from student) then 1
else MAX(ID) + 1 END FROM STUDENT;
Insert Into Student(ID)
SELECT case when not exists(select * from student) then 1
else MAX(ID) + 1 END FROM STUDENT;
Insert Into Student(ID)
SELECT case when not exists(select * from student) then 1
else MAX(ID) + 1 END FROM STUDENT;
**Query 1**:
select * from student
**[Results][2]**:
| ID |
|----|
| 1 |
| 2 |
| 3 |
| 4 |
[1]: http://sqlfiddle.com/#!2/dae11/1
[2]: http://sqlfiddle.com/#!2/dae11/1/0