Вложенный запрос MYSQL для новичка - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь увеличить поле 'sellingDate', которое находится в таблице 'company'.

UPDATE company 
   SET sellingDate = ((SELECT DATE_ADD((SELECT sellingDate 
                                          FROM company 
                                         WHERE cid = '35'), INTERVAL 1 DAY))) 
 WHERE cid = '35';

Этот запрос выдает мне сообщение об ошибке:

Код ошибки: 1093
Нельзя указать целевую таблицу 'company' для обновления в предложении FROM

Что я здесь не так делаю?

Ответы [ 4 ]

2 голосов
/ 26 января 2011

Использование:

UPDATE company 
   SET sellingDate = DATE_ADD(sellingDate, INTERVAL 1 DAY)
 WHERE cid = '35'

MySQL не разрешает подзапрос в операторе UPDATE для той же таблицы, но подзапрос в этом примере не нужен. По какой-то странной причине самостоятельное соединение в операторе UPDATE не вернет ошибку 1093, хотя это та же логика.

0 голосов
/ 26 января 2011

Зачем вам нужно использовать вложенный запрос для увеличения этого поля?

UPDATE company SET sellingDate = DATE_ADD(sellingDate, INTERVAL 1 DAY) WHERE cid = '35';
0 голосов
/ 26 января 2011

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

UPDATE company SET sellingDate=DATE_ADD(sellingDate, INTERVAL 1 DAY) WHERE cid = '35';
0 голосов
/ 26 января 2011

Попробуйте:

UPDATE company SET sellingDate = DATE_ADD(sellingDate, INTERVAL 1 DAY) WHERE cid = '35';
...