Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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搜索以获取每个具有相同用户ID的唯一单个/组条目中的最后一个值?条目可以出现在数据集中的不同位置_Sql_Sqlite - Fatal编程技术网

SQL搜索以获取每个具有相同用户ID的唯一单个/组条目中的最后一个值?条目可以出现在数据集中的不同位置

SQL搜索以获取每个具有相同用户ID的唯一单个/组条目中的最后一个值?条目可以出现在数据集中的不同位置,sql,sqlite,Sql,Sqlite,这是我的第一篇文章 我有一个表,其中有3个字段Id、UserID、Amount和一些数据。 我的问题是,我需要为每个外观获取UserID和它的最后数量。它可以是一个表中的多个用户ID,数量随着一个而增加,但有时是两个。我正在使用Sqlite。这将为您提供正确答案。尽管如此,根据我在你问题下方的评论,这并不是你所期望的答案 select a.ID, a.UserID, b.Amount from ( select UserID

这是我的第一篇文章

我有一个表,其中有3个字段Id、UserID、Amount和一些数据。
我的问题是,我需要为每个外观获取UserID和它的最后数量。它可以是一个表中的多个用户ID,数量随着一个而增加,但有时是两个。我正在使用Sqlite。

这将为您提供正确答案。尽管如此,根据我在你问题下方的评论,这并不是你所期望的答案

select
    a.ID,
    a.UserID,
    b.Amount
from
    (
        select
            UserID,
            max(ID) as ID
        from
            YOUR_TABLE
        group by
            UserID
    ) a
inner join YOUR_TABLE b on a.ID = b.ID and a.UserID = b.UserID
试着用铅

我们可以通过创建组id changeinorder[col]来实现 通过检测当前记录到以前的记录是否有变化,以用户ID的顺序为基础


您确定第二张图中的预期答案正确吗?您说过要检索每个组合的最新记录,但您预期的答案没有反映这一点,并且其中有重复的记录。您使用的是哪个数据库?Jose我试图更改问题以澄清。Vignesh Kumar A提供的解决方案确实回答了我的问题。
SELECT ID, UserID, AMOUNT FROM
(
   SELECT ID, UserID, Amount,
       CASE WHEN LEAD(UserID) OVER(ORDER BY ID) IS NULL THEN 0 ELSE LEAD(UserID) OVER(ORDER BY ID) END RN
   FROM TABLE1 
) X WHERE UserID <> RN OR RN = 0
 SELECT *,0 as changeinorder,LAG(Userid) 
           OVER (ORDER BY ID) AS 'Previous Record' INTO #TestB FROM #test
DECLARE @a INT 
      SELECT @a = 0 

      UPDATE #testB SET Changeinorder =@a, @a=
          CASE WHEN Userid=[Previous Record]
           THEN  @a   ELSE @a+1 END 
  SELECT MAX(ID),UseriD,MAX(Amount) FROM #testB GROUP BY UseriD,changeinorder