如何通过java自动增加mysql表中的列

时间:2012-07-11 08:49:05

标签: java mysql

我有2列的表1.column1 2.column2(其独特的) 现在通过java编码我通过2种方法插入数据 在我要插入数据的第一种方法中,在此coumn1字段中应该是自动增量(对于新用户)

String sql = "INSERT INTO table (column1, column2) values(?, ?)";
pstm = connection.prepareStatement(sql);

    pstm.setInt(1, auto_incrmentvalue need to set);
    pstm.setInt(2,column2);

在第二种方法中插入我想要的数据

String sql = "INSERT INTO table (column1, column2) values(?, ?)";
pstm = connection.prepareStatement(sql);

    pstm.setInt(1, column1);
    pstm.setInt(2,column2);

如何在第一种方法中设置自动增量值

注意:此处column1不是主键

3 个答案:

答案 0 :(得分:5)

INSERT INTO table(column1) SELECT MAX(column1)+1 FROM table

这个对我有用

请参阅INSERT...SELECT

您的查询应该是这样的,

INSERT INTO table(column1, column2) SELECT MAX(column1)+1, 79  FROM table

更精致的答案:

INSERT INTO
     usertable(column1, column2) 
     SELECT CASE COUNT(column1) 
         WHEN 0 THEN 0 
         ELSE MAX(column1) END+1,
     79 FROM usertable

这可能是一个更简单的解决方案:

INSERT INTO usertable(column1, column2) 
SELECT IFNULL(MAX(column1)+1,1),79 FROM usertable

答案 1 :(得分:0)

让我们尝试一次(未经测试)

INSERT INTO table(column1) SELECT count(column1)+1 FROM table

对于前,

INSERT INTO table(column1, column2) SELECT count(column1)+1, 79  FROM table

答案 2 :(得分:-1)

如果你想要column1的自动值,不要设置它,只是让它得到一个defult值

INSERT INTO table (column2) values(?)