ďťż
 
INSERT SELECT - jak nie dublować danych? ďťż
 
INSERT SELECT - jak nie dublować danych?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

INSERT SELECT - jak nie dublować danych?



Piotr - 23-11-2005 11:04
INSERT SELECT - jak nie dublować danych?
  Mam zapytanie kopiujące dane z jednej tabeli do drugiej

INSERT INTO tabela1 (nazwa, id_kol1, id_kol2)
SELECT nazwa, id_kol1, id_kol2 FROM tabela2
WHERE id_kol1=22 and id_kol2=31

i to kopiuje ładnie ale jak uniknąć kopiowania rekordów o identycznej
zawartości które już istnieją w bazie docelowej?
Czyli jeśli zawartość wyjściowa tabeli przed zapytaniem jest

tabela1
nazwa='przyklad2', id_kol1=22, id_kol2=31

tabela2
nazwa='przyklad', id_kol1=22, id_kol2=31
nazwa='przyklad2', id_kol1=22, id_kol2=31
nazwa='przyklad3', id_kol1=22, id_kol2=31
nazwa='przyklad4', id_kol1=22, id_kol2=31

to chcę mieć skopiowane wszystko z tabeli2 poza rekordem z 'przyklad2'

Jak ułożyć zatem pytanie?





Morff - 23-11-2005 11:04

  Dnia 22-11-2005 o 10:24:58 Piotr <piotr@bez.maila> napisał:

INSERT INTO tabela1 (nazwa, id_kol1, id_kol2)
(SELECT nazwa, id_kol1, id_kol2 FROM tabela2 A
WHERE id_kol1=22 and id_kol2=31
and not exists
(select 1 from tabela1 B where a.nazwa=b.nazwa and
a.id_kol1=b.id_kol1 and
a.id_kol2=b.id_kol2)

--
Pozdrawiam
Morff
----------------------
AQQ 141151




hubert depesz lubaczewski - 23-11-2005 11:04

  Dnia 22.11.2005 Piotr <piotr@bez.maila> napisał/a:
> Jak ułożyć zatem pytanie?

jedną metodę już dostałeś.
inna:
(depesz@[local]:5432) 10:52:01 [depesz]
> select * from tabela1;
nazwa | id_kol1 | id_kol2
-----------+---------+---------
przyklad2 | 22 | 31
(1 row)

(depesz@[local]:5432) 10:52:08 [depesz]
> select * from tabela2;
nazwa | id_kol1 | id_kol2
-----------+---------+---------
przyklad | 22 | 31
przyklad2 | 22 | 31
przyklad3 | 22 | 31
przyklad4 | 22 | 31
(4 rows)

(depesz@[local]:5432) 10:52:10 [depesz]
> insert into tabela1 (nazwa, id_kol1, id_kol2) select nazwa, id_kol1, id_kol2 from tabela2 except select nazwa, id_kol1, id_kol2 from tabela1;
INSERT

(depesz@[local]:5432) 10:52:36 [depesz]
> select * from tabela1;
nazwa | id_kol1 | id_kol2
-----------+---------+---------
przyklad2 | 22 | 31
przyklad | 22 | 31
przyklad3 | 22 | 31
przyklad4 | 22 | 31
(4 rows)

(depesz@[local]:5432) 10:52:41 [depesz]
> select * from tabela2;
nazwa | id_kol1 | id_kol2
-----------+---------+---------
przyklad | 22 | 31
przyklad2 | 22 | 31
przyklad3 | 22 | 31
przyklad4 | 22 | 31
(4 rows)

depesz

--
*------------------------------------------------------------------*
szukam zleceniobiorcy: http://www.depesz.com/praca.txt
*------------------------------------------------------------------*




Piotr - 23-11-2005 11:04

  dzięki Wam wielkie :)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= =?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?= Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8 [laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?= [mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?= Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?= Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?= Połączenie bazy danych z wykonaniem polaczenia telefonicznego [oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ? [MySQL] - Wstawianie aktualnej daty do bazy danych - PHP i MySQL
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • misida.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com