Mysql → insert в tbl (выберите из другой таблицы) и некоторые значения по умолчанию

Как говорится в заголовке, я пытаюсь вставить в одну таблицу, выбрав значения из другой таблицы и некоторые значения по умолчанию.

INSERT INTO def (catid, title, page, publish) 
(SELECT catid, title from abc),'page','yes')


INSERT INTO def (catid, title, page, publish) 
VALUES
((SELECT catid, title from abc),'page','yes'))

Первый запрос дает ошибку mysql, а второй - столбцу счетчика.

Что мне нужно сделать?

Ответ 1

Вам просто нужно сделать:

INSERT INTO def (catid, title, page, publish) 
SELECT catid, title, 'page','yes' from `abc`

Ответ 2

Если вы хотите скопировать подмножество исходной таблицы, вы можете сделать:

INSERT INTO def (field_1, field_2, field3)

SELECT other_field_1, other_field_2, other_field_3 from `abc`

или скопировать ВСЕ поля из исходной таблицы в таблицу адресатов, которую вы можете сделать проще:

INSERT INTO def 
SELECT * from `abc`

Ответ 3

Если вы хотите вставить все столбцы, то

insert into def select * from abc;

здесь число столбцов в def должно быть равно abc.

если вы хотите вставить подмножества столбцов, тогда

insert into def (col1,col2, col3 ) select scol1,scol2,scol3 from abc; 

если вы хотите вставить некоторые hardcorded значения, затем

insert into def (col1, col2,col3) select 'hardcoded value',scol2, scol3 from abc;

Ответ 4

С MySQL, если вы вставляете таблицу, в которой есть первичный ключ с автоматическим добавлением, и вы хотите использовать встроенную функцию MySQL, такую ​​как NOW(), вы можете сделать что-то вроде этого:

INSERT INTO course_payment 
SELECT NULL, order_id, payment_gateway, total_amt, charge_amt, refund_amt, NOW()
FROM orders ORDER BY order_id DESC LIMIT 10;

Ответ 5

INSERT INTO def (field_1, field_2, field3) 
VALUES 
('$field_1', (SELECT id_user from user_table where name = 'jhon'), '$field3')