有人可以为我解释这个SQL吗?

时间:2017-06-14 13:51:35

标签: mysql sql

我在上一个问题中得到了这个SQL作为答案,但我在解释查询时没有得到任何回应。所以我在这里问。 我之前的问题:How can i remove the oldest entries in my SQL result?

select a.id,
       a.user,
       a.item_id,
       a.created
  from reports as a
 where a.created = (select max(created) 
                      from reports as b
                     where a.item_id = b.item_id)

2 个答案:

答案 0 :(得分:1)

以下子查询是返回最大创建结果(我认为它是日期列,因此最后创建的日期将返回)

 select max(created) 
                  from reports as b
                 where a.item_id = b.item_id

根据报表中的结果,create column匹配该值并返回结果。 以下行与两个表item_id列匹配。

where a.item_id = b.item_id

答案 1 :(得分:0)

您有一个名为reports的表格,您正在提取一个由iduseritem_idcreated字段组成的表格。此新表格中只有包含每个不同created的最大值item_id的行。

此部分提取您想要的字段:

select a.id,
       a.user,
       a.item_id,
       a.created

来自名为reports(a)的表:

  from reports as a

仅提取满足条件的行:

 where a.created = (select max(created) 
                      from reports as b
                     where a.item_id = b.item_id)