Ich habe eine einzige Tabelle mit vielen Benutzern. In dieser Tabelle habe ich die Spalte user_id (INT), die ich für jede Person getrennt erhöhen möchte. user_id MUSS bei 1Problem mit MySql INSERT MAX() + 1
beginnt Ich habe ein einfaches Beispiel hergestellt:
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 |
+--------------+-----------------------+
Die folgende Abfrage dies tun wird, aber es wird nur funktionieren, wenn ‚Bob‘ in der Tabelle bereits existiert ...
INSERT INTO users(user_id, name) SELECT(SELECT MAX(user_id)+1 from users where
name='Bob'), 'Bob';
Wenn Bob nicht existiert (erster Eintrag), wird user_id auf 0 (Null) gesetzt. Das ist das Problem. Ich brauche die user_id um von 1 nicht 0 zu starten.
Das funktioniert! DANKE! – Chad
Ja, die Abfrage funktioniert, aber bitte ignoriere den zweiten Teil nicht . :) Oder wenn Sie sich entschließen, es zu ignorieren, erstellen Sie mindestens einen eindeutigen Index für '(name, user_id)', so dass die Abfrage, die sonst ein Duplikat erzeugen würde, fehlschlägt –
Tha t war meine nächste Frage tatsächlich, es ist hier: http://stackoverflow.com/questions/1590648/mysql-innodb-locking-only-the-affected-rows – Chad