SQL'分组'等效查询

时间:2016-01-19 20:44:38

标签: sql group-by

我见过以下例子:

设T是一个包含2列的表 - [id,value](都是int)

然后:

SELECT * FROM T
WHERE id=(SELECT MAX(id) FROM T t2 where T.value=t2.value);

相当于:

SELECT MAX(id) FROM T GROUP BY value

幕后发生了什么?我们怎样才能参考T1.value? T1.value=t2.value是什么意思?

2 个答案:

答案 0 :(得分:0)

@JuanCarlosOropeza是正确的,你的前提是假的。那些不是等同的查询。第二个查询应该出错。但更重要的是。子查询中WHERE子句的目的是将子查询中的行限制为外部查询中的id。

答案 1 :(得分:0)

对于幕后发生的事情,请使用说明计划,该计划提供有关优化程序如何决定获取查询要求的数据的信息。