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

时间:2014-11-14 04:58:08

标签: mysql

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

INSERT INTO STUDENT(ID) VALUES(SELECT MAX(ID)+1 FROM STUDENT );

提前致谢..

1 个答案:

答案 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