这里非常简单的基本SQL问题。
我有这张桌子:
Row Id __________Hour__Minute__City_Search
1___1409346767__23____24_____Balears (Illes)
2___1409346767__23____13_____Albacete
3___1409345729__23____7______Balears (Illes)
4___1409345729__23____3______Balears (Illes)
5___1409345729__22____56_____Balears (Illes)
我想要获得的只是ID的一个不同的行,并选择由相同的Id制作的最后一个City_Search。 因此,在这种情况下,结果将是:
Row Id __________Hour__Minute__City_Search
1___1409346767__23____24_____Balears (Illes)
3___1409345729__23____7______Balears (Illes)
更简单的方法是什么?
显然,我不想删除任何数据只是查询它。
感谢您的时间。
答案 0 :(得分:1)
您可以将小时/分钟更改为时间戳吗?
在这种情况下,您需要首先选择唯一标识行的内容:
Select id, max(time) from [table] group by id
然后使用该查询向其添加数据。
SELECT id,city search, time
FROM (SELECT id, max(time) as lasttime FROM [table] GROUP BY id) as Tkey
INNER JOIN [table] as tdata
ON tkey.id = tdata.id AND tkey.lasttime = tdata.time
应该这样做。
答案 1 :(得分:1)
SELECT Row,
Id,
Hour,
Minute,
City_Search
FROM Table T
JOIN
(
SELECT MIN(Row) AS Row,
ID
FROM Table
GROUP BY ID
) AS M
ON M.Row = T.Row
AND M.ID = T.ID
答案 2 :(得分:0)
没有加入的两个选项...
使用Row_Number函数查找最后一个
选择* FROM (选择 *, row_number()over(Part BY BY ID Order BY Hour desc Minutes Desc)作为RNB 来自表) 其中RNB = 1
操纵字符串并使用简单的Max函数
选择ID,右(MAX(Concat(小时,分钟,RPAD(Searc,20,''))),20) 从表格 按ID分组
避免加入通常要快得多......
希望这有帮助