我有一个包含许多用户的表。在那张表中,我有一个名为user_id(INT)的列,我想为每个人单独增加。 USER_ID必须从1开始问题与MySql INSERT MAX()+ 1
我已经准备了一个简单的例子:
Showing all names
+--------------+-----------------------+
| user_id | name |
+--------------+-----------------------+
| 1 | Bob |
| 1 | Marry |
| 2 | Bob |
| 1 | John |
| 3 | Bob |
| 2 | Marry |
+--------------+-----------------------+
Showing only where name = Bob
+--------------+-----------------------+
| user_id | name |
+--------------+-----------------------+
| 1 | Bob |
| 2 | Bob |
| 3 | Bob |
+--------------+-----------------------+
下面的查询将做到这一点,但如果“鲍勃”表中已经存在,它只会工作...
INSERT INTO users(user_id, name) SELECT(SELECT MAX(user_id)+1 from users where
name='Bob'), 'Bob';
如果Bob不存在(第一项)user_id设置为0(零)。这就是问题。我需要user_id从1开始而不是0.
This Works!THANK YOU! – Chad 2009-10-19 08:58:53
是的,查询工作,但请不要忽略第二部分。:)或者如果你决定忽略它,至少在'(name,user_id)'上创建一个唯一索引,这样否则会产生重复的查询将失败。 – 2009-10-19 11:54:46
t实际上是我的下一个问题,它在这里:http://stackoverflow.com/questions/1590648/mysql-innodb-locking-only-the-affected-rows – Chad 2009-10-19 19:41:22