Merhaba arkadaşlar,
Şöyle bir şeye ihtiyacım oldu
SELECT MIN(ID) AS ID FROM TABLE GROUP BY COL1;
id | col1 |
1 | x |
2 | y |
3 | z |
gelen idlerin bulunduğu kayıtlarda ki islendimi integer alanını update ile 0 yapmam gerekiyor
UPDATE TABLE SET islendimi = 0 WHERE ID IN (SELECT MIN(ID) FROM TABLE GROUP BY COL1);
komutunu ibexpert ile çalıştırdım 20 dk dan fazla bekledim ibexpert dondu işlemi sonlandırdım kendi kendime dedim bunu IN komutu ile yapayım daha önce denemiştim gayet daha hızlıydı yukarıdaki update sqlinden
UPDATE TABLE SET islendimi = 0 WHERE id IN (1, 2, ... 4000) gibi ama komut çalışmadı Too many values (more than 1500) in member list to match against hatası verdi firebirde IN komutu için 1499 gibi bir limit varmış sonra dedim öyle olmazsa bende and or ile yapayım update den önce bir select çekeyim dedim
SELECT * FROM TABLE WHERE 1=1
AND ID= '110167'
OR ID= '110168'
OR ID= '89733'
OR ID= '110169' gibi uzuyor
bu sefer de Unexpected end of command - line 1960, column 5. hatasını aldım burada da yine bir limite dayandım çünkü o satırı silip başka bir satır koysam onda da yine aynı hatayı veriyor hem IN komutu ile hem AND OR ile işlemi 4-5 parçaya bölünce sıkıntı yok.
bir fikir bir çözüm yolu varmıdır yoksa böl parçala ile devam mı etmeliyim.
Firebird sql in limit and or limit
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Firebird sql in limit and or limit
Mücadele güzelleştirir!
Re: Firebird sql in limit and or limit
procedure içinde döngü kursan daha iyi olur sanrım.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Firebird sql in limit and or limit
çok nadir lazım olan bir şey ayda yılda bir kullanacağım bir şey olduğu için procedure e gerek yok şimdilik ama tuhafıma giti acaba diğer rdbms lerdede böyle bir sınır varmıdır postgresql ile test edip sonucu buraya yazacağım inş.
Mücadele güzelleştirir!
Re: Firebird sql in limit and or limit
MSSQL ve MySQL'de de request ve IN komutu içindeki eleman sayısı ile ilgili sınırlar mevcut. MySQL ayarlarından arıtırılabiliyor, MSSQL'de emin değilim.
Bir temp tabloyada atıp oradan update edebilirsiniz.
Bir temp tabloyada atıp oradan update edebilirsiniz.
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Firebird sql in limit and or limit
postgresql ile IN komutu ile denedim bir hata uyarı çıkmadı
dönen sonuç 4825 rows fetched (0,22 sec)
and or ile 4825 rows fetched (0,48 sec)
dönen sonuç 4825 rows fetched (0,22 sec)
and or ile 4825 rows fetched (0,48 sec)
Mücadele güzelleştirir!
Re: Firebird sql in limit and or limit
Procedure oluşturmanıza gerek yok. PSQL cümlesini "execute block" deyimi ile döngü kurarak çalıştırabilirsiniz.