2012-12-21 40 views
1

本聲明同列比較如何導致它們之間的差異?

SELECT * FROM TempTable t1 

給了我這樣的輸出:

id idIndice valor 
---------------------------- 
13 11   11111111 
13 12   11111 
14 11   11111111 
14 12   11111 
16 12   11111 

現在有了一點點變化:

SELECT * FROM TempTable t1 
WHERE (select count(*) from TempTable t2 where t1.id = t2.id AND t1.valor != t2.valor) = 1 

我得到這個

id idIndice valor 
---------------------------- 
13 11   11111111 
13 12   11111 
14 11   11111111 
14 12   11111 

t1和t2是回覆ferences相同的tempTable,我可以理解t1.id = t2.id但這:

t1.valor != t2.valor 

只是對我來說太多。與t1和t2相同的列是如何引用相同的表可以有所不同?

爲什麼這個「= 1」結尾

+0

令人費解,因爲它是與名稱的列'ID'不需要是主鍵。 –

回答

3

什麼所述第二查詢本質上確實是「選擇任意的行爲,其具有相同ID和不同的勇氣的行數爲1」,即「 選擇具有任何行的副本ID的

這就是爲什麼id=13兩行被選中,因爲它們是彼此重複,也爲什麼id=14兩行被選中。

注意,如果有三排用相同的ID,他們都將被選中,是因爲他們的重複ID的數量不會是1,但2

+0

謝謝。我會投票,但我不能。信譽不足。對不起 – Augusta

+0

沒問題,歡迎來到本網站。 – SWeko

相關問題