Mysql 如何从表中获取值并在同一个表中使用它?

Mysql 如何从表中获取值并在同一个表中使用它?,mysql,Mysql,在表中,我们有一个ID列,每当插入新记录时,都应该包括连续的no In ID,但该列也没有自动递增。 我需要以下问题的答案 INSERT INTO STUDENT(ID) VALUES(SELECT MAX(ID)+1 FROM STUDENT ); 提前感谢。您应该能够用类似于现有的东西来做您想做的事情。我看到的最大问题是,如果表中没有记录,该怎么办,我用case语句处理了这个问题 Auto_Increment对于这种类型的问题会更好,因为它可以保证id。此代码可能存在以下问题:连接A选择了

在表中,我们有一个ID列,每当插入新记录时,都应该包括连续的no In ID,但该列也没有自动递增。 我需要以下问题的答案

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