Вставить с помощью SELECT

185

У меня есть запрос, который вставляет с помощью select:

INSERT INTO courses (name, location, gid) 
            SELECT name, location, gid 
              FROM courses 
             WHERE cid = $cid

Можно ли только выбрать "имя, местоположение" для вставки и задать gid для чего-то еще в запросе?

Теги:

6 ответов

388
Лучший ответ

Да, абсолютно, но проверьте свой синтаксис.

INSERT INTO courses (name, location, gid)
SELECT name, location, 1
FROM   courses
WHERE  cid = 2

Вы можете поместить константу того же типа, что и gid, а не только 1, конечно. И я просто составил значение cid.

  • 2
    Работал, большое спасибо. С Insert Select, круглые скобки не требуются вокруг имен полей. Но когда вы начинаете указывать значения в верхней части select, очевидно, вам нужно () вокруг имен полей.
  • 21
    Всегда используйте круглые скобки для удобства чтения.
Показать ещё 1 комментарий
17

Да, это так. Вы можете написать:

INSERT INTO courses (name, location, gid) 
SELECT name, location, 'whatever you want' 
FROM courses 
WHERE cid = $ci

или вы можете получить значения из другого соединения select...

  • 0
    INSERT INTO название курса, местоположение, gid ВЫБЕРИТЕ имя, местоположение, '$ this-> gid' ИЗ курсов, ГДЕ cid = $ cid - я получаю сообщение об ошибке: В вашем синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'name, location, gid SELECT name, location,' 22 'FROM courses WHERE cid = 23' в строке 1
  • 0
    Я редактировал пост .. используйте скобки ..
Показать ещё 2 комментария
4

Правильный синтаксис: выбор орфографии был неправильным

INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want' 
FROM courses 
WHERE cid = $ci 
3

Конечно, что вы хотите использовать для gid? статическое значение, PHP var,...

Статическое значение 1234 может быть следующим:

INSERT INTO courses (name, location, gid)
SELECT name, location, 1234
FROM courses
WHERE cid = $cid
0

Я думаю, что ваш оператор INSERT неверен, см. правильный синтаксис: http://dev.mysql.com/doc/refman/5.1/en/insert.html

изменить: как уже указывал Андрей...

-1

Правильный синтаксис для вашего запроса:

INSERT INTO courses (name, location, gid) 
SELECT (name, location, gid) 
FROM courses 
WHERE cid = $cid

Ещё вопросы

Сообщество Overcoder
Наверх
Меню