我需要计算差值而不是总和,有什么办法可以做到这一点吗?如果存在子聚合函数,这里是所需的示例。
SELECT p.*,SUB(p.orders) AS diff FROM products AS p GROUP BY p.id HAVING p.orders<0;
这只是示例,不是真实的表格,只是示例。这个想法是比较第一个值是否大于下一个值。真实的示例是,如果查询返回两行,则在一个查询中比较这两行的两个值(订单数)。
如果有任何帮助,我将不胜感激。
最佳答案
您想要的仅适用于始终有 2 行具有相同 p.id 和不同订单的情况。如果你有超过 2 行,你会从中减去哪一行?
因此,在特殊情况下,每个 p.id 总是有 2 行,那么您需要的不是组函数,而是将表产品与其自身连接起来,如下所示:
选择 p1.id, (p1.orders - p2.orders) 作为 diff 从产品 p1 内连接产品 p2 上的 p1.id = p2.id 其中 p1.orderid <> p2.orderid
仅当您的每种产品始终有 2 个不同的订单时,此功能才有效。
关于mysql - 差而不是和 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29042085/