SQL - 两个查询之间的差异

时间:2015-11-20 16:48:53

标签: mysql 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);

谢谢你

1 个答案:

答案 0 :(得分:0)

唯一的区别是第一个查询将为表P1.att2 > P2.att2 and P2.att1 = x中的每对行返回一行,而第二个查询将为表中{(1}}的每一行返回一行}大于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 2会被返回两次,因为他们的4在行1和行3中大于att2,但是att23只比第1行大。第二个auery将返回:

5

如果att 2 3 4 6 在每行中都是唯一的,则将第一个查询更改为att将获得与第一个查询中相同的结果。或者,如果有主键,则可以使用SELECT DISTINCT P1.att