25 Mart 2010, PERŞEMBE
Nasıl yinelemeleri önlemek için SQL Server SELECT sorgusu İÇİNE EKLE?
Aşağıdaki iki tablo var:-
Table1
-------------
ID Name
1 A
2 B
3 C
Table2
--------
ID Name
1 Z
Table2
Table1
veri eklemek istiyorum ve aynı sözdizimi aşağıdaki gibi kullanabilirsiniz:-
INSERT INTO Table2(Id, Name) SELECT Id, Name FROM Table1
Ancak, benim durumumda yinelenen Kimlikleri olabilir var Table2
(benim durumumda Onun Sadece "1
") ve istemiyorum anlaşıldı yine bu At bir hata.
Böyle bir şey yazabilirim:-
IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1)
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1
ELSE
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 WHERE Table1.Id<>1
Daha iyi bir yolu IF - ELSE
kullanmadan bunu yapmak için var mı? INSERT INTO-SELECT
bazı durumuna göre iki ifade kaçınmak istiyorum.
CEVAP
25 Mart 2010, PERŞEMBE
NOT EXISTS
kullanarak:
INSERT INTO TABLE_2
(id, name)
SELECT t1.id,
t1.name
FROM TABLE_1 t1
WHERE NOT EXISTS(SELECT id
FROM TABLE_2 t2
WHERE t2.id = t1.id)
NOT IN
kullanarak:
INSERT INTO TABLE_2
(id, name)
SELECT t1.id,
t1.name
FROM TABLE_1 t1
WHERE t1.id NOT IN (SELECT id
FROM TABLE_2)
LEFT JOIN/IS NULL
kullanarak:
INSERT INTO TABLE_2
(id, name)
SELECT t1.id,
t1.name
FROM TABLE_1 t1
LEFT JOIN TABLE_2 t2 ON t2.id = t1.id
WHERE t2.id IS NULL
Üç seçenek, LEFT JOIN/IS NULL
daha az etkilidir. this link for more details bkz.
Bunu Paylaş:
Nasıl bir kayıt (select top 1) Her kay...
Nasıl SQL Server için büyük bir tablo ...
nasıl son Ekle codeıgniter active reco...
Nasıl JSP dosyaları Java kod önlemek i...
Nasıl Server tablo sütun olup olmadığı...