[ zutibalon @ 23.10.2006. 20:35 ] @
ne znam sta je u pitanju ali ova naredba mi ne funkcionise:

delete from tabela where kolona < (select max(kolona) from tabela) limit 1;
probao sam i
delete from tabela where kolona = (select max(kolona) from tabela) limit 1;

izbaci mi sledecu poruku u oba slucaja:
ERROR 1093 at line 1: you can't specify target 'tabela' for update in FROM clause

u sustini trebao bi da obrisem sve ispod maksimalne vrednosti neke kolone
da li ima jos neki nacin da se komanda postavi.

mysql verzija je 4.1
[ Not now, John! @ 23.10.2006. 21:17 ] @
Radi sa dva upita. Ne možeš koristiti SELECT u UPDATE/INSERT upitima nad istom tabelom.
[ zutibalon @ 23.10.2006. 21:22 ] @
Uf, kako bi to izgledalo ako nije problem da mi das primer...
[ Not now, John! @ 24.10.2006. 01:15 ] @
SELECT @maksimum:=MAX(kolona) FROM tabela;
DELETE FROM TABELA WHERE kolona < @maksimum;
[ zutibalon @ 24.10.2006. 01:46 ] @
Svaka ti cast Not now,John!

Ne da radi, nego rastura :) extra...

Samo me zanima da li je moguce navesti kao 3 ili 4 vrednosti ispod maximuma
nesto kao

DELETE from tabela WHERE kolona < @maximum - 3;

da li je izvodivo.

Ali iako nije nema veze mnogo si mi vec pomogao.


Hvala ti puno.

[ Not now, John! @ 24.10.2006. 01:55 ] @
Sigurno. Pročitaj.
[ zutibalon @ 24.10.2006. 10:47 ] @
Komanda super radi.
Ali jel postoji nacin da se ona ubaci nekako u notepad pa da se izvrsava na taj nacin
kao batch file.

Ubacio sam na seledeci nacin ali nema efekta:
mysql -h localhost -u root -ppassword -e "select @maksimum:=max(broj) from mojatabela" bazapodataka

a u drugi batch:
mysql -h localhost -u root -ppassword -e "delete from mojatabela where broj < @maksimum" baza podataka


i u treci batch file
call (ime prvog batcha)
call (ime drugog batcha)

Direktno iz promta radi extra ali ovako nisam uspeo.
[ Not now, John! @ 24.10.2006. 11:10 ] @
Tako ne radi, jer su te promjenjive vezane za konekciju i korisnika, tj. nakon izvršenja prve komande promjenjive se ponište.
Stavi sve SQL naredbe u jedan txt fajl pod nazivom npr. "komande.sql":
Code:
select @maksimum:=max(broj) from mojatabela;
delete from mojatabela where broj < @maksimum;

Poslije toga, sve SQL komande izvršavaš pomoću:
Code:
mysql -u root -ppassword bazapodataka < komande.sql

Pošto radiš pod Windowsom, nisam siguran da će gornja komanda da radi što se tiče redirekcije "<".
Nadam se da hoće.
[ zutibalon @ 24.10.2006. 11:52 ] @
Ej radi i pod windowsom. odlicno je.

Hvala ti na vremenu Not now, John!. Pozdrav