仅获取最新数据的SQL查询
我想做一个SQL查询,在这里我只能看到我的最新发货。目前我得到以下结果仅获取最新数据的SQL查询,sql,greatest-n-per-group,Sql,Greatest N Per Group,我想做一个SQL查询,在这里我只能看到我的最新发货。目前我得到以下结果 item date licence plate number 1 13.5.2016 abc-123 2 13.5.2016 abc-123 3 10.5.2016 xyz-567 1 20.4.2016 abc-123 2 20.4.2016 abc-123 6 10.5.2016 xyz-567 不过,我
item date licence plate number
1 13.5.2016 abc-123
2 13.5.2016 abc-123
3 10.5.2016 xyz-567
1 20.4.2016 abc-123
2 20.4.2016 abc-123
6 10.5.2016 xyz-567
不过,我只想根据车牌号获得最新的货物。想要的输出看起来像
item date licence plate number
1 13.5.2016 abc-123
2 13.5.2016 abc-123
3 10.5.2016 xyz-567
您可以使用以下查询:
SELECT t1.*
FROM mytable AS t1
JOIN (
SELECT item, MAX("date") AS "date"
FROM mytable
GROUP BY item
) AS t2 ON t1.item = t2.item AND t1."date" = t2."date"
查询使用一个派生表,该表选择每个
项的最新日期。使用此派生表,我们可以选择与此日期对应的记录。您可以使用以下查询:
SELECT t1.*
FROM mytable AS t1
JOIN (
SELECT item, MAX("date") AS "date"
FROM mytable
GROUP BY item
) AS t2 ON t1.item = t2.item AND t1."date" = t2."date"
查询使用一个派生表,该表选择每个项的最新日期。使用此派生表,我们可以选择与此日期对应的记录。这可能有助于:
SELECT TOP 10 --change 10 to any desired number to be viewed
*
FROM YourDatabaseName
ORDER BY Date DESC
也许这有助于:
SELECT TOP 10 --change 10 to any desired number to be viewed
*
FROM YourDatabaseName
ORDER BY Date DESC
你必须首先找到每个车牌号的最长日期,然后加入表格
您可以使用下面的查询
select t2."item",t1."date",t1."licence plate number" from (
(select max("date") as date, "licence plate number" from Table_1 group by
"licence plate number")) t1
left join Table_1 t2
on (t1."date" = t2."date" and t1."licence plate number" = t2."licence plate number")
此查询的输出将为
1 2016-05-13 abc-123
2 2016-05-13 abc-123
3 2016-05-10 xyz-567
6 2016-05-10 xyz-567
你必须首先找到每个车牌号的最长日期,然后加入表格
您可以使用下面的查询
select t2."item",t1."date",t1."licence plate number" from (
(select max("date") as date, "licence plate number" from Table_1 group by
"licence plate number")) t1
left join Table_1 t2
on (t1."date" = t2."date" and t1."licence plate number" = t2."licence plate number")
此查询的输出将为
1 2016-05-13 abc-123
2 2016-05-13 abc-123
3 2016-05-10 xyz-567
6 2016-05-10 xyz-567
以下是各种DBMS支持的标准SQL:
select item, date, licence_plate_number
from (
select item, date, licence_plate_number,
row_number() over (partition by licence_plate_number order by date desc as rn)
from the_table
) t
where rn = 1
order by item;
使用窗口函数通常比使用聚合进行自联接要快。以下是各种DBMS支持的标准SQL:
select item, date, licence_plate_number
from (
select item, date, licence_plate_number,
row_number() over (partition by licence_plate_number order by date desc as rn)
from the_table
) t
where rn = 1
order by item;
使用窗口函数通常比使用聚合的自联接快。您使用的是什么dbms?定义“最新”,然后我们可以帮助您。是什么使第3项包括在内,而第6项不包括在内?您使用的数据库管理系统是什么?列日期的数据类型可能重复?您使用的数据库管理系统是什么?定义“最新”,然后我们可以帮助您。是什么使第3项包括在内,而第6项不包括在内?您使用的是哪种数据库管理系统?列日期的数据类型可能重复?不是OP要求的。(以及针对没有标记dbms的问题的特定于产品的答案。)不是OP要求的。(以及对没有标记dbms的问题的特定于产品的答案。)注意,分隔标识符的方括号是特定于产品的,并且该问题没有标记dbms。ANSI SQL有双引号,例如“item”
。(MS SQL Server实际上支持这两个版本。)请注意,分隔标识符的方括号是特定于产品的,并且问题没有标记dbms。ANSI SQL有双引号,例如“item”
。(MS SQL Server实际上支持这两个版本。)