Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅获取最新数据的SQL查询_Sql_Greatest N Per Group - Fatal编程技术网

仅获取最新数据的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 不过,我

我想做一个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

您可以使用以下查询:

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实际上支持这两个版本。)