我有一个简单的表格,上面有交货日期和数量。我正在尝试编写一个查询,该查询将返回当前交货日期、上一个日期和数量。我需要我的 where 子句可以访问的交货和以前的日期。
当我使用 mysql 或 phpMyAdmin 运行我的语句时,所有结果的前一个日期都是 NULL。我不知道我做错了什么。
我的桌子:
CREATE TABLE delivery
(`delivery_date` int(11), quantity float);
INSERT INTO delivery
(`delivery_date`, `quantity`)
VALUES
(1399953600, 84),
(1414382400, 109.4),
(1418187600, 124.5);
我的查询:
SELECT s.quantity AS quantity, s.start_date AS start_date, s.delivery_date AS delivery_date
FROM (SELECT quantity, @start AS start_date, @start := delivery_date AS delivery_date,
(SELECT @start := NULL) AS vars
FROM delivery d
ORDER BY start_date ASC) s
我已经在SQL Fiddle上设置了我正在使用的查询。
我认为您可以通过将变量初始化放在 from 子句中来简化查询:
select quantity
, @start as start_date
, @start := d.delivery_date as delivery_date
from (select @start := null) as vars,
delivery as d
order by d.delivery_date;
我认为问题是 @start
变量对于每个获取的行都初始化为 null。通过将变量定义移动到 FROM
子句,它将只初始化一次。
检查更新的SQL小提琴并尝试自己。
希望这有帮助