INSERT...SELECT...ON DUPLICATE KEY UPDATE и одинаковые названия столбц

kruzer25

Что делать, если в UPDATE используются (и как столбец, который меняется, и в выражении для получения нового значения) имя столбца из таблицы, по которой делается INSERT, а в таблицах, по которым делается SELECT, есть столбец с таким же именем?
Если в UPDATE просто писать имя столбца (хотя бы только в выражении или в имени изменяемого столбца возникает ошибка 1052 (Column 'xxx' in field list is ambiguous если в UPDATE везде писать `имя_таблицы_на_которой_делаются_INSERT_и_UPDATE`.`имя_столбца` - 1110 (Column 'xxx' specified twice)... что делать?

gopnik1994

а что за субд такая, в которой нельзя алиасы прописать?

kruzer25

MySQL5.
Поясни, куда именно ты хочешь их прописать?

artimon

Покажи запрос

Flack_bfsp

SELECT table.field AS xxx1, table.field AS xxx2

kruzer25

Например: INSERT INTO `tbl1`(`id`,`num`) SELECT `id2`,1 FROM `tbl2` ON DUPLICATE KEY UPDATE `num`=`num`+1
(если в tbl1 и в tbl2 есть поле num)
2: И что?

kruzer25

^^
Ещё раз, пытаюсь выполнить запрос типа
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 тут не упоминается ни разу.

kruzer25

^^^
Запрос INSERT INTO `tbl1`(`id`,`num`) SELECT `tbl1_id`,1 FROM `tbl2` WHERE `tbl2`.`id`=123 ON DUPLICATE KEY UPDATE `num2`=`num2`+1. отлично работает.
Оставить комментарий
Имя или ник:
Комментарий: