我有一个简单的表格,其中包含交货日期和数量。我正在尝试编写一个将返回当前交货日期,上一个日期和数量的查询。我需要我的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上设置了我正在使用的查询。
答案 0 :(得分:2)
我认为您可以通过将变量初始化放在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 fiddle并尝试自己。
希望这有帮助