Mysql 如何从表中获取值并在同一个表中使用它?
在表中,我们有一个ID列,每当插入新记录时,都应该包括连续的no In ID,但该列也没有自动递增。 我需要以下问题的答案Mysql 如何从表中获取值并在同一个表中使用它?,mysql,Mysql,在表中,我们有一个ID列,每当插入新记录时,都应该包括连续的no In ID,但该列也没有自动递增。 我需要以下问题的答案 INSERT INTO STUDENT(ID) VALUES(SELECT MAX(ID)+1 FROM STUDENT ); 提前感谢。您应该能够用类似于现有的东西来做您想做的事情。我看到的最大问题是,如果表中没有记录,该怎么办,我用case语句处理了这个问题 Auto_Increment对于这种类型的问题会更好,因为它可以保证id。此代码可能存在以下问题:连接A选择了
INSERT INTO STUDENT(ID) VALUES(SELECT MAX(ID)+1 FROM STUDENT );
提前感谢。您应该能够用类似于现有的东西来做您想做的事情。我看到的最大问题是,如果表中没有记录,该怎么办,我用
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;
大样本:
如果您在列上使用
IDENTITY
(SQL Server)或AUTO_INCREMENT
(MySQL-)修饰符,则无需执行此操作。TheThink i don’t think i don’t want to use AUTO_INCREMENT modifier on The column.----为什么?----我是一名新手,我想编写一个插入脚本,有时ID将从1000开始,1000条记录之后,我也可以开始ID为5000等。
[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