2010-06-01 6 views

Odpowiedz

39
INSERT ... SELECT 

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

INSERT INTO newsletter_to_send 
SELECT id_subscriber FROM subscribers 

PS: Na pewno nie trzeba w WHERE klauzuli?

+0

Works fine, thanks! – hsz

+2

Aby użyć insertu, musimy najpierw utworzyć tabelę, w tym przypadku, jeśli nie ma tabeli newsletter_to_send, wystąpi błąd! –

+0

@Praveen Kumar: oczywiste jest, że musisz mieć serwer z zainstalowanym mysql i utworzoną tabelą, czyż nie? – zerkms

18

MySQL nie obsługuje składni SELECT ... INTO ....

Musisz użyć składni INSERT INTO ... SELECT .., aby tego dokonać.

Czytaj więcej tutaj .. http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

+0

Czy mógłby mi Pan pomóc w rozwiązaniu problemu? Http: // stackoverflow .com/questions/43987326/convert-oracle-trigger-to-mysql-trigger – sam

3

MySQL Server nie obsługuje rozszerzenia SELECT ... INTO TABLE Sybase SQL. Zamiast tego serwer MySQL obsługuje standardową składnię SQL INSERT INTO ... SELECT, która w zasadzie jest tym samym. Zobacz rozdział 12.2.5.1, "INSERT ... SELECT Syntax".

Ref: - this

8

MySQL nie obsługuje SELECT INTO [table]. Obsługuje tylko SELECT INTO [variable] i może wykonywać tylko jedną zmienną naraz.

Co może zrobić, jednak jest użyć składni CREATE TABLE z SELECT tak:

CREATE TABLE bar ([column list]) SELECT * FROM foo; 
+0

Ten przykład jest dobry i pozwala mysql wykonać równoważnik SELECT ... INTO ... przez automatyczne tworzenie tabeli – ejectamenta

+0

Przynajmniej na najnowszy wersję MySQL można przypisać wiele wartości do wielu zmiennych w jednym słowie 'SELECT [values] INTO [variables]'. Sprawdź https://dev.mysql.com/doc/refman/5.7/en/select-into.html –

-3

MySQL nie obsługuje SELECT INTO [table]. Obsługuje tylko SELECT INTO [variable] i może wykonywać tylko jedną zmienną naraz.

Co można zrobić, jednak jest użyć składni CREATE TABLE z SELECT tak:

11

myślę, że można śledzić moje ustąpiła i mam nadzieję, że będziesz w stanie rozwiązać problemu.

Przy pierwszym użyciu tego sql polecenie, aby utworzyć nową tabelę, w którym chcesz wziąć kopia zapasowa

CREATE TABLE destination_table_name LIKE source_table_name; 

Po czym można użyć tego polecenia, aby skopiować te dane

INSERT INTO destination_table_name 
SELECT * FROM source_table_name; 

Jeśli masz już poprzednie dane w tabeli docelowej, Po pierwsze można użyć tego polecenia:

TRUNCATE TABLE destination_table_name; 

Dzięki Md.Maruf Hossain

+0

Dzięki temu pomóż ... –

8
CREATE TABLE table_name 
AS 
SELECT ...(your select)
3

próbowałem pracować na tym właśnie teraz, a to działa na mnie:

CREATE TABLE New_Table_name 
SELECT * FROM Original_Table_name; 
+1

"Nowy ~ jest nieco mylący i należy go pominąć –

0

mysql nie obsługują SELECT ... INTO ... składnię,

jeśli to nowa tabela, użyj instrukcji CREATE TABLE ... SELECT ....

przykład:

CREATE TABLE artists_and_works 
    SELECT artist.name, COUNT(work.artist_id) AS number_of_works 
    FROM artist LEFT JOIN work ON artist.id = work.artist_id 
    GROUP BY artist.id; 

czytaj więcej tutaj create-table-select