Temat: [SQL] Insert + Select w jednym zapytaniu

Mam dwie tabele:

tabela1

id | login | imie | nazwisko

tabela2

id | uzytkownik | imie | nazwisko

Chcę jednym zapytaniem pobrać dane z tabela1 i dodać do tabela2, ale id w tabela2 ma być autoinkrementowane niezależnie od id tabela1.


INSERT INTO tabela2 SELECT * FROM tabela1 WHERE id=10;


Jak przerobić takie zapytanie? Wiem, że można pobrać wszystko oprócz id ale jak żeby nie wypisywać wszystkich nazw pól bo w mojej tabeli jest ich ok 20 więc trochę czasu to zajmie.

Temat: [SQL] Insert + Select w jednym zapytaniu


INSERT INTO tabela2(kol1,kol2) SELECT kol1,kol2 FROM tabela1 WHERE id=10;

?

konto usunięte

Temat: [SQL] Insert + Select w jednym zapytaniu

@Wojciech: nie przesadzasz? Gdybyś miał 200 pól to rozumiem, ale 20 to chyba można wypisać.

http://forums.mysql.com/read.php?51,158277,163070#msg-...

Temat: [SQL] Insert + Select w jednym zapytaniu

Piotr Likus:
@Wojciech: nie przesadzasz? Gdybyś miał 200 pól to rozumiem, ale 20 to chyba można wypisać.

http://forums.mysql.com/read.php?51,158277,163070#msg-...

No dobra chyba faktycznie trochę za leniwy byłem, ale po prostu ten problem mnie zaciekawił czy jest to możliwe do zrobienia już pomijając ilość pól.
Maciej Czerpiński

Maciej Czerpiński Programista PHP

Temat: [SQL] Insert + Select w jednym zapytaniu


INSERT INTO tabela2 (uzytkownik, imie, nazwisko) VALUES (SELECT login, imie, nazwisko FROM tabela 1 WHERE id = 10);
Maciej Czerpiński edytował(a) ten post dnia 24.11.10 o godzinie 09:15
Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: [SQL] Insert + Select w jednym zapytaniu

INSERT INTO tabela2 SELECT null, login, imie, nazwisko FROM tabela1
Grzegorz R.

Grzegorz R. Specjalista, Grupa
Orange

Temat: [SQL] Insert + Select w jednym zapytaniu

Paweł Koralewski:
INSERT INTO tabela2 SELECT null, login, imie, nazwisko FROM tabela1

jeśli ten 'null' ma wejść do pierwszej komórki, którą jest id określone jako identity (czy jak kto woli autoinkrement)to nie da rady, bo z definicji pole to nie może otrzymać wartości 'null'
no chyba, że liczba kolumn w select jest o jeden mniejsza niż w tabeli docelowej, czyli wszystkie kolumny - (minus) identyfikator, to wtedy zapytanie zadziała
ewentualnie zapytanie powyższe zredukować o pierwszy 'null' i też pójdzie, przynajmniej w tsql ;)
ja jednak preferuję wypisanie kompletnej listy pól, na których będę operował :P
Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: [SQL] Insert + Select w jednym zapytaniu

Grzegorz Rydz:
Paweł Koralewski:
INSERT INTO tabela2 SELECT null, login, imie, nazwisko FROM tabela1

jeśli ten 'null' ma wejść do pierwszej komórki, którą jest id określone jako identity (czy jak kto woli autoinkrement)to nie da rady, bo z definicji pole to nie może otrzymać wartości 'null'
no chyba, że liczba kolumn w select jest o jeden mniejsza niż w tabeli docelowej, czyli wszystkie kolumny - (minus) identyfikator, to wtedy zapytanie zadziała
ewentualnie zapytanie powyższe zredukować o pierwszy 'null' i też pójdzie, przynajmniej w tsql ;)
ja jednak preferuję wypisanie kompletnej listy pól, na których będę operował :P

Otóż MySQL zezwala na wpisanie NULL w pole AUTOINCREMENT i wtedy automagicznie, jak można się domyśleć, wstawiany jest tam kolejny ID. Inne silniki - nie wiem, nie sprawdzałem.
Grzegorz R.

Grzegorz R. Specjalista, Grupa
Orange

Temat: [SQL] Insert + Select w jednym zapytaniu

:)
a w MSSQL (t-sql), pole określone jako identity nie może mieć wartości null

Następna dyskusja:

ASP.NET - GridView - Insert




Wyślij zaproszenie do