[MySQL] Wybierz tylko te rekordy z t1 =?ISO-8859-2?Q?kt=F3rych_?==?ISO-8859-2?Q?nie_ma_w_t2=2E_JOIN_=3F?=
sawic - 08-01-2007 00:25
[MySQL] Wybierz tylko te rekordy z t1 =?ISO-8859-2?Q?kt=F3rych_?==?ISO-8859-2?Q?nie_ma_w_t2=2E_JOIN_=3F?=
Witam. Mam mały problem z prostym w sumie zapytaniem. Nie bawiłem się jeszcze join-ami i trochę trudno mi to zrozumieć na początek.
Mam dwie tabele: t1: user(char) ---------- user1 user2 user3 user4 user5
t2: user(char UNIQUE) ----------------- user1 user2 user3
zapytanie: insert into t1(user) select user from t2 oczywiście nie zadziała, bo powtórzą się wartości dla user.
Jak dopisać do t2 tylko tych user-ów, których nie ma t2 a są w t1 ?
Pozdrawiam
keczerad - 08-01-2007 00:25
=?ISO-8859-2?Q?Re=3A_=5BMySQL=5D_Wybierz_tylko_te_reko?==?ISO-8859-2?Q?rdy_z_t1_kt=F3rych_nie_ma_w_t2=2E_JOIN_?==?ISO-8859-2?Q?=3F?=
sawic napisał(a):
> t2: > user(char UNIQUE) > ----------------- > user1 > user2 > user3 > > zapytanie: > insert into t1(user) select user from t2 > oczywiście nie zadziała, bo powtórzą się wartości dla user.
a niby czemu ma nie zadzialac skoro kolumna ma wartosc unique ?
zapytanie z malym wyjatkiem insert into t2(user) select user from t1
--
keczerad
http://www.e-mo.com.pl sklep w (X)HTML wraz z modulem do Subiekta GT
sawic - 08-01-2007 00:25
=?ISO-8859-2?Q?Re=3A_=5BMySQL=5D_Wybierz_tylko_te_reko?==?ISO-8859-2?Q?rdy_z_t1_kt=F3rych_nie_ma_w_t2=2E_JOIN_?==?ISO-8859-2?Q?=3F?=
keczerad napisał(a): > a niby czemu ma nie zadzialac skoro kolumna ma wartosc unique ? > > zapytanie z malym wyjatkiem > insert into t2(user) select user from t1 >
No ja wiem, że nie miało zadziałać, tylko obrazowało to co chciałem osiągnąć, a nie wiedziałem jak. Po przestudiowaniu manuala już wiem. Daję odpowiedź, gdyby komuś było potrzebne. Aby wyciągnąć z t1 te wartości, które nie występują w t2 należy:
select t1.user from t1 left join t2 on t1.user = t2.user where t2.user is null
Pozdrawiam
Maciek Dobrzanski - 08-01-2007 00:25
"sawic" <sawicc@wytnij.to.gmail.com> wrote in message news:enrgh9$hh6$1@news.onet.pl...
> Jak dopisać do t2 tylko tych user-ów, których nie ma t2 a są w t1 ?
Najprościej to: INSERT IGNORE INTO t2 (user) SELECT user FROM t1
ale czy najszybciej?
Maciek
sawic - 09-01-2007 00:01
=?ISO-8859-2?Q?Re=3A_=5BMySQL=5D_Wybierz_tylko_te_reko?==?ISO-8859-2?Q?rdy_z_t1_kt=F3rych_nie_ma_w_t2=2E_JOIN_?==?ISO-8859-2?Q?=3F?=
Maciek Dobrzanski napisał(a): > Najprościej to: > INSERT IGNORE INTO t2 (user) SELECT user FROM t1 > > ale czy najszybciej? >
No proszę. O tym IGNORE nie wiedziałem, że jest. Niestety nie powiem Ci czy szybciej, bo tych rekordów jest na tyle mało, że nie odczuję różnicy. Jakichś przykładowych danych nie chce mi się robić, bo to mógłbyś se sprawdzić i Ty. W każdym razie wielkie dzięki.
Pozdrawiam
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Gdzie MySQL 4.1, a gdzie 5.0?
[MS SQL] "set names" (mySQL) w MS SQL
oracle -> oracle lub oracle -> mysql replikacja - programy
[MySQL] Zwrot tego, co pasuje i nie pasuje :-/
[pgsql] Dostosowanie składni MySQL 5.0 -> PGSQL 8.1
[mysql] galeria zdjec - numerowanie zdjec
[MySQL] Zapytanie z pliku , wynik do pliku
[mysql] CONCAT agregujący, ale nie GROUP_CONCAT()
mysql data 0000-00-00 na koniec
[MySQL] Problem z zapisem danych w bazie danych
zanotowane.pldoc.pisz.plpdf.pisz.plczterowers.keep.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 |
|