0

我正在尝试获取一个包含列(品牌、名称、id、时间、价格)的表,并将之前的价格添加到同一行中,因此新列(品牌、名称、id、时间、价格,上一个价格)。在这个价格和 prev_price 都是整数。

我遇到的挑战是我正在使用的数据库中每个都有许多不同的变量。例如:品牌 A、B、C、D 名称:1 - 100(品牌各不相同) id:80 - 300(品牌也各不相同)

品牌和名称保持不变的示例表以及我希望 prev_price 因子包含的内容

品牌名称 id 时间 价格 prev_price
A 25 80 1 103 空
25 80 2 105 103
A 25 81 1 24 空
25 81 2 24 0
25 81 3 14 -10

任何人都可以帮助推荐如何做到这一点?

4

2 回答 2

0

我认为您需要首先确定time每个(brand,name,id)三元组的前一个,然后在该时间进行自加入以提取prev_time

SELECT mytable.*, prev.price AS prev_price
FROM   mytable
  LEFT JOIN (
    SELECT   mytable.*, MAX(t2.time) AS prev_time
    FROM     mytable LEFT JOIN mytable AS prev ON
             prev.brand = mytable.brand
         AND prev.name  = mytable.name
         AND prev.id    = mytable.id
         AND prev.time  < mytable.time
    GROUP BY mytable.brand, mytable.name, mytable.id, mytable.time
  ) AS pairs USING (brand, name, id, time)
  LEFT JOIN mytable AS prev ON
        prev.brand = pairs.brand
    AND prev.name  = pairs.name
    AND prev.id    = pairs.id
    AND prev.time  = pairs.prev_time
于 2012-06-28T22:11:15.123 回答
0

在这种情况下,试试这个:

Select mytable.*, x.price AS prev_price
FROM mytable LEFT JOIN
    (SELECT * FROM mytable) AS x ON
    mytable.id = x.id
    AND mytable.brand = x.brand
    AND mytable.name = x.name
    AND mytable.time = x.time + 1
于 2012-06-29T00:34:37.310 回答