Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skopiowanie całego wiersza
Forum PHP.pl > Forum > Bazy danych
php programmer
Witam,
Czy ktoś wie, o ile to jest wogóle możliwe,
jak w prosty sposób w jednym zapytaniu sklonować jeden wiersz

Dla prykładu podam zapytanie które klonuje całą tabele
  1. CREATE TABLE klon_aktualnosci AS SELECT * FROM aktualnosci

tylko że mi chodzi jedynie o sklonowanie wiersza,
który będzie się znajdował w tej samej tabeli
co oryginalny wiersz
nospor
Mowimmy tu o mysql?
http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

ps: czemu wiec to nie jest na mysql?
php programmer
To akurat robie w postgresie,
ale dałem na ogólne, bo podejżewam,
forma zapytania nie różni się..
nospor
OK. tylko sie pytalem smile.gif
Ale na przyszlosc jak chodzi ci o konkretną baze, to lepiej wal pytanie odnosnie konkretnej. Wiec jak, jest taka skladnia co podalem w postgresie?
php programmer
tak działa, zrobiłem zapytanie
  1. INSERT INTO newsy SELECT * FROM newsy WHERE id = 216


tylko że dało mi takie same id, musze zmodyfikować
zapytanie żeby dało mi inne

Edit: Hm zrobiłęm coś takiego, ale nie działa
  1. INSERT INTO newsy SELECT * FROM newsy ON DUPLICATE KEY UPDATE id=220 WHERE id=216

może ktoś wie dlaczego
nospor
on duplicate key powinno byc na koncu calego zapytania.

Ale jesli na id masz autoincrement, to olej id przy duplikacji. Id samo sie wstawi (przynajmniej w mysql to dziala)

  1. INSERT INTO tabela (pole1, pole2,....) SELECT pole1, pole2,... FROM tabela WHERE id=jakiesid;

pole1, pole2,... -pola bez id

ps: masz zapchaną skrzynkę PW smile.gif
php programmer
OK, dzieki
Zrobiłem ostatecznie wersje
  1. INSERT INTO tabela (pole1, pole2,....) SELECT pole1, pole2,... FROM tabela WHERE id=jakiesid;

Chociaż włąsnie chciałem jej uniknąć, bo mam kilkanaście pól w tej tabeli

Cytat
on duplicate key powinno byc na koncu calego zapytania.

tak miałem na początku, ale mi nie działo, widocznie w postgresie jest jakoś inaczej

Cytat
Ale jesli na id masz autoincrement, to olej id przy duplikacji.

Tutaj w postgresie zamiast AUTOINCREMENT musze używać sekwencje
(dlatego nie przepadam za postgresem, bo lubią w nim wymyślać takie głupoty)
nospor
Cytat
tak miałem na początku
tja... a mialo byc na koncu winksmiley.jpg

edit: hehe, ach ta gra słów.... przepraszam, moja wina sad.gif
php programmer
Mówiąc
Cytat
tak miałem na począrku
prosze zrócić uwage że po słowie tak nie ma przecinka,
gdyby był przecinek, to rzeczywiście sens zdania był by inny.

Miałem na myśli że miałem tak zanim wysłąłem posta
czyli najpierw (czyli na początku) miałem na końcu
ale mi nie działo wieć zmieniłem kolejność i dopiero wysłałem posta
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.