MySQL - сложный INSERT ... SELECT для одной таблицы [MySQL 5.051] - PullRequest
0 голосов
/ 15 ноября 2008

Я пытаюсь вставить новую строку в мою таблицу, которая содержит те же данные, что и я, которую я пытаюсь выбрать из той же таблицы, но с другим user_id и без фиксированного значения для auto_id, поскольку это поле auto_increment и установка ti в значение NOW (). Ниже мой запрос макета, где '1' - это новый user_id. Я пробовал много вариантов, но все еще застрял, любой, кто может помочь мне превратить это в рабочий запрос.

INSERT INTO `lins` ( `user_id` , `ad` , `ke` , `se` , `la` , `ra` , `ty` , `en` , `si` , `mo` , `ti` , `de` , `re` , `ti` ) (

SELECT '1', `ad` , `ke` , `se` , `la` , `ra` , `ty` , `en` , `si` , `mo` , `ti` , `de` , `re` , NOW( )
FROM `lins`
WHERE autoid = '4'
AND user_id = '2'
)

Спасибо, что нашли время помочь мне!

Ответы [ 2 ]

1 голос
/ 15 ноября 2008

Предположительно, вы знаете, что "WHERE autoid = 4" достаточно, если это уникальный autoid. И если вы намеревались заключить в кавычки целые числа (1, 4 и 2), а они числовые, вы создали подразумеваемые приведения; в предложении WHERE это отключит возможность оптимизатора использовать индексы для результирующих целочисленных значений.

Кроме того, использование ненужных (и легко ошибочных) обратных тиков было корнем по крайней мере еще одного подобного вопроса здесь.

1 голос
/ 15 ноября 2008

Я только что попробовал, и это работает для меня.

Вы неправильно написали имя столбца, соответствующее "ke"?

Я предполагаю, что настоящие имена столбцов в вашей таблице - это не просто две буквы. Например. у вас есть два столбца с именем "ti" в отображаемом запросе, поэтому я предполагаю, что вы отредактировали их из более длинных имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...