INSERT INTO table .... SELECT... FROM table

3 отговора 141 прегледа
#1

INSERT INTO table .... SELECT... FROM table

В книгата на Дюбоа за MySQL има пример за добавяне в таблица на селектирано от друга таблица съдържание:
INSERT INTO score (student_id, score, event_id)
SELECT student_id, 100 AS score, 15 AS event_id FROM student

Аз искам да добавя в таблица един ред който да е като друг ред от СЪЩАТА таблица с изключение на едно поле.
Опитвам с:
INSERT INTO score (student_id, score, event_id)
SELECT student_id, score, 16 AS event_id
FROM score AS s1 WHERE s1.student_id=100

обаче MySQL-a ми отговаря:
INSERT TABLE 'score' isn't allowed in FROM table list

Как да стане? Явно нещо бъркам, но къде?

Отговор
в отговор на ano #2

Re: INSERT INTO table .... SELECT... FROM table

на сайбейз върви и пее:
1> create table score (student_id int, score int, event_id int)
2> go
1> insert into score values (1,1,1)
2> go
(1 row affected)
1> insert into score select student_id, score, 16 from score where student_id=1
2> go
(1 row affected)
1> select * from score
2> go
student_id score event_id
----------- ----------- -----------
1 1 1
1 1 16

(2 rows affected)
1

Отговор
в отговор на ano #3

Re: INSERT INTO table .... SELECT... FROM table

Никъде не бъркаш - съобщението е съвсем красноречиво според мен.

INSERT TABLE 'score' isn't allowed in FROM table list

Не можеш да го направиш със същата таблица.

Това което можеш е да минеш през временна таблица.



CREATE TEMPORARY TABLE temp TYPE=HEAP SELECT student_id, score, 16 AS event_id
FROM score AS s1 WHERE s1.student_id=100


INSERT INTO score (student_id, score, event_id)
SELECT * FROM temp;

DROP TABLE temp; -> товма може и да го пропуснеш, но не добър стил.

salle.online.bg/sig
Отговор
в отговор на baj L\bo #4

Re: INSERT INTO table .... SELECT... FROM table

Точно този пример не съм опитал, но иначе от таблица в същата вмъквам всеки ден, съвсем аналогично на примера с SQL Server. То вярно че животното е почнало живота си като Sybase но ми се струва че и на Oracle съм го правил (нямам пред себе си да опитам). Защо не върви на базата която се ползва в първия постинг?

не ме ебе как е Вуте, аз гледам да съм си добре
Отговор