Farklı Insert deyimlerini yürütmek için Sayıma dayalı IF ELSE deyimini kullanma
Veritabanımda arama yaparken, belirli bir öğenin mevcut olmadığını tespit edersem bir INSERT deyimi çalıştırıyorum ve bu öğeden bir veya daha fazlasını bulursam farklı bir INSERT deyimi çalıştırıyorum.
IF ELSE ifadelerinin nasıl kullanılacağından tam olarak emin değilim.
Şu ana kadar sahip olduğum şey, hedef verinin kaç kez göründüğünü sayacak bir deyimdir; 0'dan büyükse TRUE, değilse FALSE yazdıracaktır. Bunu iki farklı INSERT deyimi çalıştırmak için nasıl kullanabileceğimi anlamama yardımcı olacak herhangi bir örnek bulamıyorum.
Şu ana kadar elimde olanlar bunlar:
SELECT CASE WHEN COUNT(*)>0 THEN 'TRUE' ELSE 'FALSE' END
(
SELECT [Some Column], COUNT(*) TotalCount
FROM INCIDENTS
WHERE [Some Column] = 'Target Data'
GROUP BY [Some Column]
)
53
3
Ne demek istediğinizi pek anlamadım
. Peşinde olduğunuz
SWITCH
gibiCASE
kullanmak mı?Açık bir çözüm, 2 ayrı sorgu çalıştırmaktır, önce count=1 olan tüm öğeleri seçin ve eklemenizi çalıştırın, ardından count>1 olan öğeleri seçin ve ikinci eklemeyi çalıştırın.
İkinci adım olarak, iki ekleme benzer ise muhtemelen bunları tek bir sorguda birleştirebilirsiniz.
başka bir olasılık da kayıt kümenizde döngü yapmak için bir imleç kullanmak ve her satır için ihtiyacınız olan mantığı uygulamaktır.
Bu SQL Server'da ise, söz diziminiz doğrudur; ancak, iç içe sorgunuzdaki Toplam Sayı olarak COUNT(*)'a başvurmanız gerekir. Bu size ihtiyacınız olanı verecektir:
Bunu kullanarak, TotalCount'u bir değişkene atayabilir ve ardından INSERT deyimlerinizi yürütmek için bir IF ELSE deyimi kullanabilirsiniz: