Soran
Sql şartlı güncelleme

Soru
-
Arkadaşlar Merhaba
Benim bir sql tablom var ve bu tobloda renk adında bir sütunum var.
yaklaşık olarak da 30000 kaydım var
ben tek seferlik olarak bu kayıtların renk bölümüne seçtiğim 10 rengin kodunu eklemek istiyorum
yani ilk on kaydın rengi kırmızı, yeşil mavi.... olduktan sonra sonraki on kaydın rengi de tekrar kırmızı , yeşil mavi... den başlamasını istiyorum bunu nasıl yapabilirim yardımlarınızı bekliyorum
Tüm Yanıtlar
-
Merhaba
İlk aklıma gelen çözüm SQL üzerinde while döngüsü kullanmak. Aşağıdaki kod bütün satırlara sırayla Kırmızı, Yeşil, Mavi olarak ekleyecektir.
DECLARE @i INT = 1 WHILE @i <= 30000 BEGIN UPDATE tablo SET renk='Kırmızı' where id='i' UPDATE tablo SET renk='Yeşil' where id='i+1' UPDATE tablo SET renk='Mavi' where id='i+2' END
- Yanıt Olarak Öneren Şafak ARKUN 16 Eylül 2017 Cumartesi 17:54
-
-
Merhaba,
Bu sorunu Update SP (Store Procedure) yazarak çözebileceğinizi düşünüyorum. Oluşturduğunuz SP içerisinde id sütunundaki değerleri bir parametre (@ID) ile programın arayüzünde bir nesne ile DB ye aktarıp belirtilen WHILE yapısı içerisine aktarabilirsiniz.
İyi günler.
-
DECLARE @tablo TABLE (numara int,renk text) INSERT INTO @tablo (numara, renk) VALUES (1, '#2196f3'); INSERT INTO @tablo (numara, renk) VALUES (2, '#ff9800'); INSERT INTO @tablo (numara, renk) VALUES (3, '#9c27b0'); INSERT INTO @tablo (numara, renk) VALUES (4, '#8bc34a'); INSERT INTO @tablo (numara, renk) VALUES (5, '#607d8b'); INSERT INTO @tablo (numara, renk) VALUES (6, '#ffc107'); INSERT INTO @tablo (numara, renk) VALUES (7, '#e91e63'); INSERT INTO @tablo (numara, renk) VALUES (8, '#03a9f4'); INSERT INTO @tablo (numara, renk) VALUES (9, '#795548'); INSERT INTO @tablo (numara, renk) VALUES (10, '#cddc39'); DECLARE @sırano INT = 0 DECLARE @Yevmiyeler TABLE (sırano int,renk text,personelno int) INSERT INTO @Yevmiyeler SELECT ROW_NUMBER() OVER (ORDER BY No) AS Satır,PersonelRengi,No FROM PersonelListesi order by KullanıcıNo UPDATE @Yevmiyeler set @sırano =case when @sırano = 10 then 1 else @sırano + 1 end, sırano=@sırano FROM @Yevmiyeler UPDATE @Yevmiyeler set renk=( select renk from @tablo where numara =sırano) FROM @Yevmiyeler tt UPDATE PersonelListesi set PersonelRengi =(select renk from @Yevmiyeler where personelno =No )
şöyle bir kod yazarak güncellemeyi yaptım . 25bin kayıt üzerinde iki buçuk dakika sürdü. belki uzun bir sorgu yazmış olabilirim ama işimi gördü ilgilenen herkese teşekkür ederim. ayrıca bu sorguyu kısaltabilecek arkadaşlarında cevap yazmasını bekliyorum