------------------------------------- | user_id | user_name | user_visits | ------------------------------------- | 1 | foo | 5 | ------------------------------------- | 2 | bar | 12 | -------------------------------------
user_id: автоинкремент, user_visits: по умолчанию 1
INSERT INTO table (user_name) VALUES ('baz'), ('bar'), ('qux');
выше оператор, конечно же, вставит 3 новые записи, в результате:
------------------------------------- | user_id | user_name | user_visits | ------------------------------------- | 1 | foo | 5 | ------------------------------------- | 2 | bar | 12 | ------------------------------------- | 3 | baz | 1 | ------------------------------------- | 4 | bar | 1 | ------------------------------------- | 5 | qux | 1 | -------------------------------------
, но я пытаюсь достичь:
------------------------------------- | user_id | user_name | user_visits | ------------------------------------- | 1 | foo | 5 | ------------------------------------- | 2 | bar | 13 | ------------------------------------- | 3 | baz | 1 | ------------------------------------- | 4 | qux | 1 | -------------------------------------
буквально,
если поле user_name существует, обновить user_visits, иначе вставить новую запись.
можно ли добиться этого с помощью одного оператора вставки?