INSERT INTO table .... SELECT... FROM table
3 отговора
141 прегледа
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
Как да стане? Явно нещо бъркам, но къде?
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
Как да стане? Явно нещо бъркам, но къде?
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
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
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
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
Re: INSERT INTO table .... SELECT... FROM table
Точно този пример не съм опитал, но иначе от таблица в същата вмъквам всеки ден, съвсем аналогично на примера с SQL Server. То вярно че животното е почнало живота си като Sybase но ми се струва че и на Oracle съм го правил (нямам пред себе си да опитам). Защо не върви на базата която се ползва в първия постинг?
не ме ебе как е Вуте, аз гледам да съм си добре
не ме ебе как е Вуте, аз гледам да съм си добре