gpt4 book ai didi

mysql - 如何获取下表数据的映射历史

转载 作者:行者123 更新时间:2023-11-29 03:47:31 24 4
gpt4 key购买 nike

我有一个 UserId 更改的历史映射表,每次 UserId 更改时,都会在历史表中插入一行新 UserId 和旧 UserId。下面是示例表和数据:

UserIdNew | UserIdOld
---------------------
5 | 1
10 | 5
15 | 10

以上数据说明 UserId 1 经历了以下从 UserId 1 -> 5-> 10 -> 15 的转变。

我想查询所有旧 ID 以获取给定的 UserIdNew,如何在单个查询中完成?

对于这种情况,如果 UserIdNew = 15,则它应该返回 1,5,10

最佳答案

如果 UserIdNew 总是大于 UserIds 链中的前一个(旧),即如果像 10->20->5->1 这样的情况永远不会发生,则此查询可以完成这项工作(不是经过全面测试,使用 newold 代替您的字段名称):

SELECT 
CASE
WHEN new=7 THEN @seq:=concat(new,',',old)
WHEN substring_index(@seq,',',-1)=new THEN concat(@seq,',',old)
ELSE @seq
END AS SEQUENCE
FROM (SELECT * FROM UserIdsTable ORDER BY new DESC) AS SortedIds
ORDER BY SEQUENCE DESC
LIMIT 1

关于mysql - 如何获取下表数据的映射历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50289429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com