'DA NOT yüklemelerini kullanma Bazı sorgular oluşturdum ve sonuçların neden beklediğim gibi olmadığını anlayamıyorum.SQL
Sorgu II ve III'ün neden aynı sonuçları döndürmediğini anlamıyorum. Sorgu II'nin Query I tarafından seçilmemiş tüm satırları döndürmesini beklerim.
Aynı sonuçları vermesi için Query II ve III olmasını beklerdim. Benim düşünceme göre, III sonuçları doğru olanlardır.
Eminim bir şeyleri özlüyorum, sadece ne olduğunu bilmiyorum.
örnek:
Tablo:
CREATE TABLE [dbo].[TestTable](
[TestTableId] [int] NOT NULL,
[ValueA] [int] NULL,
[ValueB] [int] NULL
) ON [PRIMARY]
veri:
TestTableId ValueA ValueB
1 10 5
2 20 5
3 10 NULL
4 20 NULL
5 NULL 10
6 10 10
7 NULL NULL
Sorgular:
Bütün kayıtlar: select * TestTable
denI. Bir seçme sorgusu:
select * from TestTable
where (ValueA = 10 or ValueA = 20) AND ValueB = 5
Sonuç:
TestTableId ValueA ValueB
1 10 5
2 20 5
II. Aynı sorgu ancak DEĞİL
select * from TestTable
where NOT ((ValueA = 10 or ValueA = 20) AND ValueB = 5)
Sonuç:
TestTableId ValueA ValueB
5 NULL 10
6 10 NULL
III. İkinci olarak aynı sorgu
select * from TestTable where TestTable.TestTableId not in
(select TestTableId from TestTable
where (ValueA = 10 or ValueA = 20) AND ValueB = 5)
Sonucu (sanırım):
TestTableId ValueA ValueB
3 10 NULL
4 20 NULL
5 NULL 10
6 10 10
7 NULL NULL
'NULL = 5'' UNKNOWN' ("no" yerine) olarak değerlendirir. – onedaywhen
Biraz mecazi çalışıyordum. Asıl nokta, ValueB'nin NULL olduğu bir satırın her ikisinden de hariç tutulacağıdır. – BradC
@onedaywhen - Yayınınızı, yorumunuza bağlı olarak biraz daha hassas olacak şekilde düzenledim. – BradC