2015-11-20 203 views
-5

我一直在尋找一段時間,但我沒有找到答案:這些查詢之間有什麼區別?SQL - 兩個查詢之間的差異

SELECT P1.att 
FROM table AS P1, table AS P2 
WHERE P2.att1=x AND P1.att2 > any P2.att2; 

SELECT att 
FROM table 
WHERE att2 > any (SELECT att2 FROM table WHERE att1=x); 

感謝的你

回答

0

唯一的區別是,第一個查詢將返回一行在表,其中P1.att2 > P2.att2 and P2.att1 = x每一對行,而第二個查詢將只返回一個排在每一行其中att2大於在某些行中att1 = x。例如,如果表中包含:

att att1 att2 
1 x 10 
2 y 20 
3 x 15 
4 z 16 
5 a  5 
6 b 11 

第一個查詢將返回

att 
2 
2 
3 
4 
4 
6 

24返回兩次,因爲他們att2att2更大行1和3,但35只比第一行大。第二個auery將僅返回:

att 
2 
3 
4 
6 

如果att在每一行中都是唯一的,則將第一個查詢更改爲SELECT DISTINCT P1.att將使您獲得與第一個查詢中相同的結果。或者如果有主鍵,則可以使用GROUP BY primary_key_column