【发布时间】:2018-12-13 20:30:07
【问题描述】:
如何在 MySQL 中从第 2 行中减去第 1 行,从第 3 行中减去第 2 行等? 我从中提取数据的表包含多个产品,并且所有产品都有多个价格(在不同日期)
我正在使用的代码:
SELECT
orderline_sales.product_name,
orderline_sales.price
FROM
orderline_sales
GROUP BY price
HAVING orderline_sales.product_name = 'Ibuprofen';
我得到的结果:
|---------------------|------------------|
| product_name | price |
|---------------------|------------------|
| Ibuprofen | 30.20 |
|---------------------|------------------|
| Ibuprofen | 32.20 |
|---------------------|------------------|
| Ibuprofen | 35.20 |
|---------------------|------------------|
我想要的结果:
|---------------------|------------------|------------------|
| product_name | price | price_change |
|---------------------|------------------|------------------|
| Ibuprofen | 30.20 | 0 |
|---------------------|------------------|------------------|
| Ibuprofen | 32.20 | 2 |
|---------------------|------------------|------------------|
| Ibuprofen | 35.20 | 3 |
|---------------------|------------------|------------------|
【问题讨论】:
-
您选择 2 列
orderline_sales.product_name, orderline_sales.price并获得 2 列。如果你需要 3,SELECT3. -
@Alex 这根本没用,考虑到他需要从上一列进行更改,他会为第三列选择什么。这是可行的,但肯定不是很明显
-
@dave 他的查询本身就很糟糕。
GROUP BY price至少应该是GROUP BY product_name, price。并且预期结果没有提供任何关于为什么数据应该包含额外列以及应该如何计算的解释。对我来说,重点是 OP 并不真正理解他自己的查询。 -
我建议您阅读this 并提供示例数据。
-
并添加到@Alex 的注释 SQL 定义为无序,因此 MySQL 不使用
ORDER BY不知道哪一行是 1、2 或 3 .. 即使旧的 MySQL 版本自动排序 @ 987654330@ 查询 MySQL 5.7+ 中删除了此功能
标签: mysql calculated-columns correlated-subquery