如果我取消注释LEFT JOIN
?
#1054 - Unknown column 's.id' in 'on clause'
在查询
中多次使用列s.id
SELECT s.id
, s.qty
, s.price_cost
, @running_total:=@total running_total
, @total:=@total+s.qty-s.qtyoff total
FROM stock s
, (SELECT @running_total:=0, @total:=0) vars
/*LEFT JOIN stockoff o ON o.stockoff_id=s.id*/
WHERE s.block_id = 5659
AND s.type = 2
AND s.is_booked = 1
AND s.product_id = 18110
AND s.time <= 1514678400
GROUP
BY s.id
HAVING running_total <= 0
ORDER
BY s.time DESC
, s.id DESC
答案 0 :(得分:2)
我猜错误是因为您将连接操作的旧式逗号语法与较新的JOIN关键字混合使用。
放弃逗号
FROM stock s, (SELECT @running_total:=0, @total:=0) vars
^
并将其替换为适当的CROSS JOIN
FROM stock s CROSS JOIN (SELECT @running_total:=0, @total:=0) vars
^^^^^^^^^^
这只是猜测。我从未研究过在单个SELECT中混合使用两种不同语法时会发生什么。但没有充分的理由将它们混合在一起。 (也许问题中的错误足以让不混合它们。
旧式逗号语法非常适合向后兼容,允许旧版SQL继续运行。但是新的SQL不需要使用它。