2015-07-03 4 views
-1

Я перемещаю некоторый старый код от SQLite на мой сайт, чтобы получить доступ через веб-сайт. Одним из запросов, который я использовал довольно часто, был запрос INSERT or REPLACE INTO, который проверял, существует ли строка в таблице (на основе первого значения), и если бы это произошло, это заменило бы данные в этой строке на строку, указанную в VALUES. Однако, если строка не найдена, она будет INSERT строка в таблицу.MySQL эквивалент SQLite INSERT или REPLACE INTO

запросов Пример (Reduced):

INSERT or REPLACE INTO player_currency (player_id, gold) VALUES (1, 500) 

Это найти игрока с ID 1 и установить его золото до 500, независимо, чтобы, если он был в таблице, или нет.

Я не уверен, имеет ли это значение, но я использую XAMMP 5.6.8 (я добавил PHP к тегам, считая, что это то, что используется для подключения к базе данных, не стесняйтесь удалять его, если это не так. «т принадлежат)

  • Dabatase Подключение: Библиотека (PHP) PDO
  • MySQL Версия: 5.6.24
  • PhpMyAdmin Версия: 4.4.3
+1

Проверить это один из: http://stackoverflow.com/questions/6107752/how-to-perform-an-upsert- so-that-i-can-use-both-new-and-old-values-in-update-par – dwjv

+0

попробуйте [Заменить] (https://dev.mysql.com/doc/refman/5.0/en/replace .html) 'replace player_currecy (player_id, gold) VALUES (1, 500)' –

ответ

2
INSERT INTO player_currecy (player_id, gold) VALUES(1, 500) ON DUPLICATE KEY UPDATE gold = VALUES(gold) 

Просто запомните, что в качестве первичного ключа должен быть идентификатор.

0

Предполагая, что player_id является первичным ключом, вы можете сделать это:

INSERT INTO player_currency (player_id, gold) VALUES (1,500) ON DUPLICATE KEY UPDATE gold=500; 
+0

"он заменит данные в этой строке строкой, указанной в VALUES", так как он хочет, чтобы значение, которое он вводил в VALUES, тогда я думаю он может меняться, и тогда этот sql не будет работать proberly, так как он всегда будет вставлять 500, а не динамически вставлять одно и то же значение. – Djip

+0

Это сработает, ему просто нужно установить свой код, чтобы установить значение дважды в строке SQL. Я использую это все время. –

+0

Отбросил ваш -1 просто потому, что вы ответили на вопрос, однако ответ Джипа правильный, поскольку он адаптируется к значению без необходимости жесткого кодирования. – Hobbyist