2013-07-16 2 views
0

У меня есть запрос, который предполагается либо обновить, либо вставить в зависимости от того, существует ли строка.Ошибка синтаксиса MYSQL для запроса на вставку/обновление, связанного со вторичной таблицей

Затем я также подключаю его к вторичной таблице, поэтому я могу связать их с правильными идентификаторами, но я получаю синтаксическую ошибку и не знаю, как ее исправить.

Это мой запрос:

INSERT INTO resources as r (r.quantity,r.tid) 
    SELECT r.quantity+?,u.tid            
    FROM users u WHERE u.uid = ? 
ON DUPLICATE KEY UPDATE 
    r.quantity = r.quantity+?, r.tid = u.tid 

Ошибка

You have an error in your SQL syntax; check the manual that corresponds to your MySQL 
server version for the right syntax to use near 'as r (r.quantity,r.tid) SELECT 
r.quantity+'0',u.tid FR' at line 1 

Любой в состоянии объяснить, что я понял, и как я могу это исправить?

ответ

1

Операция insert не принимает псевдонимы. Я думаю, вы хотите что-то вроде этого:

INSERT INTO resources(quantity, tid) 
    SELECT ?, u.tid            
    FROM users u 
    WHERE u.uid = ? 
    ON DUPLICATE KEY 
     UPDATE quantity = quantity+? 
+0

Как насчет ссылки между двумя таблицами 'r.tid = u.tid'? – Sir

Смежные вопросы