差异而不是和mysql

时间:2015-03-13 21:16:32

标签: mysql sql group-by aggregate-functions

我需要计算差异而不是总和,有没有办法做到这一点。如果存在子聚集函数,则这是期望的示例。

SELECT p.*,SUB(p.orders) AS diff FROM products AS p GROUP BY p.id HAVING p.orders<0;    

这只是一个例子,而不是真正的表格,仅举例来说。我们的想法是比较第一个值是否大于下一个值。真实的例子是,如果查询返回两行,则在一个查询中比较这两行的两个值(订单计数) 我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

只有当总共有2行具有相同的p.id和不同的订单时,才能使用您想要的内容。如果你有超过2行,你会减去哪一行?

因此,在特殊情况下,每个p.id总是有2行,那么你需要的不是组功能,而是将表产品与自身连接起来:

选择p1.id,(p1.orders - p2.orders)为diff 来自p1.id = p2.id的产品p1内连接产品p2 其中p1.orderid&lt;&gt; p2.orderid

只有每个产品总共有2个不同的订单时才会有效。