INSERT...SELECT...ON DUPLICATE KEY UPDATE и одинаковые названия столбц
а что за субд такая, в которой нельзя алиасы прописать?
Поясни, куда именно ты хочешь их прописать?
Покажи запрос
SELECT table.field AS xxx1, table.field AS xxx2
(если в tbl1 и в tbl2 есть поле num)
2: И что?
Ещё раз, пытаюсь выполнить запрос типа
INSERT INTO `tbl1`(`id`,`num`) SELECT `tbl1_id`,1 FROM `tbl2` WHERE `tbl2`.`id`=123 ON DUPLICATE KEY UPDATE `num`=`num`+1.
Если в tbl2 нет поля num, всё отлично, если есть - возникает ошибка (в UPDATE).
Любителям кричать про алиасы - куда я тут должен эти алиасы засунуть? Наличие/отсутствие поля tbl2.num тут не упоминается ни разу.
Запрос INSERT INTO `tbl1`(`id`,`num`) SELECT `tbl1_id`,1 FROM `tbl2` WHERE `tbl2`.`id`=123 ON DUPLICATE KEY UPDATE `num2`=`num2`+1. отлично работает.
Оставить комментарий
kruzer25
Что делать, если в UPDATE используются (и как столбец, который меняется, и в выражении для получения нового значения) имя столбца из таблицы, по которой делается INSERT, а в таблицах, по которым делается SELECT, есть столбец с таким же именем?Если в UPDATE просто писать имя столбца (хотя бы только в выражении или в имени изменяемого столбца возникает ошибка 1052 (Column 'xxx' in field list is ambiguous если в UPDATE везде писать `имя_таблицы_на_которой_делаются_INSERT_и_UPDATE`.`имя_столбца` - 1110 (Column 'xxx' specified twice)... что делать?