Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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
Mysql SQL从表中获取每个项的最新记录_Mysql_Sql_Mysql 8.0 - Fatal编程技术网

Mysql SQL从表中获取每个项的最新记录

Mysql SQL从表中获取每个项的最新记录,mysql,sql,mysql-8.0,Mysql,Sql,Mysql 8.0,我试图使用max(Created_at)并按stockId分组来查询数据库,以获取每个库存的最新记录,但这样一来,它会将每个项目的id放在第一位,并在最后一位创建 我怎样才能让它集体带来最新的记录?请帮忙。 我的质询如下: SELECT a.id as A_id, b.id as B_id, max(b.Created_at) AS Created_at FROM beta b INNER JOIN alpha a ON b.a_id = a.id GROUP BY a.id

我试图使用
max(Created_at)
并按
stockId
分组来查询数据库,以获取每个库存的最新记录,但这样一来,它会将每个项目的id放在第一位,并在最后一位创建

我怎样才能让它集体带来最新的记录?请帮忙。 我的质询如下:

SELECT a.id as A_id, b.id as B_id, max(b.Created_at) AS Created_at 
  FROM beta b 
 INNER JOIN alpha a ON b.a_id = a.id 
 GROUP BY a.id 

您可以使用分析函数,如
行数()


其中,您的记录按stockID(
a.id
)分组,并按
created\u在
列中向下排序后选择最新的。如果在每个分组的
stockId
值处创建了相等的
关系,并且所有令人满意的结果都应该包含在结果集中,那么将
行数()
替换为
稠密列数()

可以使用分析函数,例如
行数()


其中,您的记录按stockID(
a.id
)分组,并按
created\u在
列中向下排序后选择最新的。如果在每个分组的
stockId
值处创建了相等的
关系,并且所有令人满意的结果都应该包含在结果集中,那么将
行数()
替换为
密集秩()

declare @item table
(
itemid int
,itemname varchar(100)
)
insert into @item
values(1,'A'),(2,'B'),(3,'C')

declare @stock table
(
itemid int
,stockid int
,updatedate datetime
)
insert into @stock
values(1,1,'2020-08-04 13:11'),(1,1,'2020-08-04 14:11')
      ,(1,2,'2020-08-04 15:11'),(1,2,'2020-08-04 14:11') 


select * from @item a
 inner join
(select stockid,itemid,max(updatedate)lastupdatedate from @stock
group by stockid,itemid
)b on a.itemid=b.itemid

我知道你需要这样

declare @item table
(
itemid int
,itemname varchar(100)
)
insert into @item
values(1,'A'),(2,'B'),(3,'C')

declare @stock table
(
itemid int
,stockid int
,updatedate datetime
)
insert into @stock
values(1,1,'2020-08-04 13:11'),(1,1,'2020-08-04 14:11')
      ,(1,2,'2020-08-04 15:11'),(1,2,'2020-08-04 14:11') 


select * from @item a
 inner join
(select stockid,itemid,max(updatedate)lastupdatedate from @stock
group by stockid,itemid
)b on a.itemid=b.itemid

请看《草莓》。我希望这就是你的意思@Barbaros Ozhan。8+请看@草莓。我希望这就是你的意思@Barbaros Ozhan。8+