-2

我得到了具有用户 ID 的表,并在表中引用了先前引用的 ID,如下所示。

如何使用日期结果查询最早的参考 ID?

User ID     Previous ID Date
9990002939  9990000321  Apr-08
9990000321  9990000021  Apr-04
9990000021  9990000015  Jun-02
9990000015              May-00

如果提供的 ID 是 9990002939 -> 查询结果应该是 9990000015 May-00

4

2 回答 2

1

我假设 SQL Server,所以方法可能会有所不同,具体取决于您实际使用的内容。

您可以使用递归 cte:

;WITH cte AS (SELECT * ,Rnk = 1
             FROM Table1
             WHERE UserID = '9990002939' 
             UNION ALL
             SELECT a.*,Rnk = Rnk+1
             FROM Table1 a  
             JOIN cte b
               ON a.UserID = b.PreviousID)
     ,cte2 AS (SELECT *,ROW_NUMBER() OVER(ORDER BY Rnk DESC)'RowRank'
               FROM cte)
SELECT *
FROM cte2
WHERE RowRank = 1

SLQ 小提琴

于 2013-08-29T04:55:30.970 回答
0
SELECT USER_ID,DATE,MIN(USER_ID) AS mini FROM YOUR TABLE HAVING USER_ID=mini
于 2013-08-29T04:46:02.283 回答