Mysql SQL-两个查询之间的差异
我已经寻找了一段时间,但我没有找到答案:这些查询之间有什么区别Mysql SQL-两个查询之间的差异,mysql,sql,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); 谢谢唯一的区别是,第一个查询将为表中的每一对行返回一行,其中P1.att2>P2.
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);
谢谢唯一的区别是,第一个查询将为表中的每一对行返回一行,其中
P1.att2>P2.att2和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
2
和4
返回两次,因为它们的att2
在第1行和第3行大于att2
,但3
和5
仅大于第1行。第二个auery将返回:
att
2
3
4
6
如果att
在每一行中都是唯一的,那么将第一个查询更改为selectdistinct P1.att
将得到与第一个查询相同的结果。或者,如果有主键,您可以使用按主键分组列