解释查询以通过“SELECT”命令选择每个组的前两个记录

时间:2014-06-14 08:15:18

标签: mysql

我从Solution找到了我的查询问题的答案 但是,我在理解查询的逻辑方面存在问题。任何人都可以帮我理解这个问题吗?

查询:

select a.*
from Tablename a
where 
(
   select count(*) 
   from Tablename as b
   where a.group = b.group and a.id >= b.id
) <= 2

1 个答案:

答案 0 :(得分:0)

Mysql将首先形成

的查询操作
select count(*) 
   from Tablename as b
   where a.group = b.group and a.id >= b.id

这将计算表名Tablename的记录,条件是a.group列值等于b.group列值且a.id的值大于{{1它的值,它将计算满足此条件的记录。

然后它将它传递给主/父查询它是op。 现在父查询将根据b.id的运算小于或等于Tablename来计算subquery的记录。

你为什么要查询同一个表(在主+子查询中)? 2来自何处?