2017-06-14 70 views
-6

我在前面的問題中得到了這個SQL,但我在解釋查詢時沒有得到任何迴應。所以我在這裏問。 我剛纔的問題:How can i remove the oldest entries in my SQL result?有人可以爲我解釋這個SQL嗎?

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) 
+3

什麼部分你不明白? –

+1

請至少鏈接到其他問題,所以我們有一些背景! –

+0

我想要它解釋 - 部分零件,瞭解完整查詢 –

回答

0

你有一個表稱爲reports和你提取一個由iduseritem_idcreated字段的表。這個新表格只包含每個不同item_id的最大值爲created的行。

這部分提取領域,你想:

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) 
+0

你能解釋一下情況嗎? –

+1

'3','1','19333','2017-06-13 19:26:56' '4','1','19333','2017-06-13 19:29:24'你有相同的item_id,對嗎?但兩個不同的時間戳,所以你選擇最近的一個,最大(創建) – MiloBellano

+2

在上面的@ MiloBellano的例子中,你將有兩行具有相同的item_id,所以你的查詢將選擇具有創建的字段的最大值的行(最近的日期) – user2309843

1

下面的子查詢是返回最大創建結果(我認爲它是日期列,所以最後創建日期將返回)

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

根據報告表中的結果創建列匹配該值並返回結果。 以下行與兩個表的item_id列匹配。

where a.item_id = b.item_id 
+1

子查詢返回每個不同item_id的最大創建結果,而不是全局最大值。 – user2309843

相關問題