我有一个维护脚本,它将一堆数据从一个数据库转储到另一个数据库。
我正在尝试将数据作为
SELECT id, IFNULL(rank1,(SELECT rank2
FROM table
WHERE rank1 IS NOT NULL and
rank2<rank2 of current row
ORDER BY rank2 LIMIT 1)) FROM table
我试图使用当前行的rank2获得的是最接近的rank2,其中rank1不为null。我假设rank1是rank2的有效替代
所以,我相信我有两个问题。
- 我认为我没有在嵌套的select语句中使用rank2
- 我不知道怎么说'最接近{{1}}当前。
醇>
我对Rank1的值范围为0-20,000,rank2的范围为0-150,000(不确定为什么这很重要)。排名之间没有有效的相关性。
Rank1总是一个更可靠的数字,但通常是空的,所以我试图用这种替代品来捏造我的订单。
以下是一些用作示例的示例数据
id rank1 rank2 1 120,000 14,000 2 120,000 18,420 3 126,000 15,500 4 85,000 NULL 5 75,000 16,000 6 70,000 15,700 7 68,000 NULL 8 42,000 NULL 9 26,000 NULL 10 21,500 8,000
我希望能够获得2,5,4,6,7,3,1,8,9,10的订单。或接近那个。基本上,当我为rank2获得null时,获得最接近rank1的最近rank2。
我不认为这是'完美',但比排名第一更好。
答案 0 :(得分:0)
我不是100%肯定你在问什么。将COALESCE(rank1,rank2,rankX)返回给你的第一个非空值值吗?