2016-03-03 3 views
3

Я пытаюсь тор ип вставки выбрать который выглядит следующим образом:MySQL INSERT SELECT, не Вставка

INSERT INTO users_extension_usage (userid, extensionid, complete) 
SELECT '3', extensions.id FROM extensions WHERE extensions.folder='definitions', '1' 

однако есть проблема, когда я запустить его в PhpMyAdmin, который ссылается на «1»:

#1064 - 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 ' '1'' at line 2 

Я пробовал много разных комбинаций SELECT, INSERT и т. Д., Но я вижу проблему. Я смотрел на любые разные сообщения здесь и на других форумах, но, к сожалению, большинство из них предлагает синтаксис, который я использую!

Я попытался настроить SQL скрипку здесь: http://sqlfiddle.com/#!9/9f460

Любые предложения о том, как это может работать будут с благодарностью приняты :)

ответ

7

Вы пропускаете третий столбец:

INSERT INTO users_extension_usage(userid, extensionid, complete) 
    SELECT '3', extensions.id, '1' as complete 
    FROM extensions 
    WHERE extensions.folder = 'definitions'; 

'1' принадлежит к заявлению SELECT, а не после WHERE.

+1

Привет Гордон. Большое спасибо, что работает ... но меня это немного смущает. Почему нам нужно определить «1» как полный, но не «3» как userid? –

+3

@ пользователь2037165. , , Алиасы не имеют значения. Я просто добавил псевдоним, чтобы уточнить, для чего используется значение (и, как это ни парадоксально, моя попытка выяснения, похоже, вызвала дальнейшую путаницу). –