Відповіді:
Так, абсолютно, але перевірте свій синтаксис.
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