Відповіді:
Так, абсолютно, але перевірте свій синтаксис.
INSERT INTO courses (name, location, gid)
SELECT name, location, 1
FROM courses
WHERE cid = 2
Можна поставити константу того ж типу, що і gidна її місце, не тільки 1, звичайно. І, я щойно склав cidзначення.
OUTPUTзастереження , яке дозволяє вам також помістити все, що ви вставили в іншу таблицю. Я не думаю, що MySQL має еквівалент. Ви можете створити тимчасову таблицю , вибрати її в цю таблицю, а потім заповнити coursesцю таблицю, а потім використати таблицю темпів для всього іншого, що вам потрібно.
Так. Ви можете написати:
INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want'
FROM courses
WHERE cid = $ci
або ви можете отримати значення з іншого приєднання вибору ...
Правильний синтаксис: вибір орфографії був неправильним
INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want'
FROM courses
WHERE cid = $ci
Впевнений, що ти хочеш використовувати для гіду? статичне значення, PHP var, ...
Статичне значення 1234 може бути таким:
INSERT INTO courses (name, location, gid)
SELECT name, location, 1234
FROM courses
WHERE cid = $cid
Я думаю, що ваш твердження INSERT неправильне, див. Правильний синтаксис: http://dev.mysql.com/doc/refman/5.1/uk/insert.html
редагувати: як Андрій вже вказував ...
Звичайно, ви можете.
Однак слід зазначити одне: Оператор INSERT INTO SELECTкопіює дані з однієї таблиці та вставляє їх в іншу таблицю І вимагає, щоб типи даних у вихідних та цільових таблицях відповідали. Якщо типи даних із заданих стовпців таблиці не збігаються (тобто намагаються вставити VARCHARв INTабо TINYINTв INT), сервер MySQL видасть SQL Error (1366).
Тож будьте обережні.
Ось синтаксис команди:
INSERT INTO table2 (column1, column2, column3)
SELECT column1, column2, column3 FROM table1
WHERE condition;
Бічна примітка: Існує спосіб уникнути проблеми вставки різних типів стовпців, використовуючи кастинг у SELECT, наприклад:
SELECT CAST('qwerty' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin;
Ця конверсія ( CAST()є синонімом CONVERT()) дуже корисна, якщо ваші таблиці мають різні набори символів у одному стовпчику таблиці (що може потенційно призвести до втрати даних, якщо не оброблятися належним чином).
Правильний синтаксис для вашого запиту:
INSERT INTO courses (name, location, gid)
SELECT (name, location, gid)
FROM courses
WHERE cid = $cid