【发布时间】:2019-10-07 16:22:09
【问题描述】:
我有两个通过 id_factura 字段链接的表。
“factura”表为每笔销售生成一个 id,可以包含销售表的多个产品,并且还有一个名为 num_factura 的字段,其中包含发票编号。
“venta”表包含“nuevo”或“usado”状态的产品等。 在这两个表中已经进行了几个查询。这些表还有其他字段,例如注册日期...
表格事实
+---------------+-------------+
| id_factura | num_factura |
+---------------+-------------+
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
| 4 | 2 |
| 5 | 3 |
+---------------+-------------+
塔布拉文塔
+---------------+-------------+-------------+
| id_venta | estado | id_factura |
+---------------+-------------+-------------+
| 1 | usado | 1 |
| 2 | usado | 2 |
| 3 | nuevo | 1 |
| 4 | nuevo | 2 |
| 5 | nuevo | 3 |
+---------------+-------------+-------------+
我要问的问题是,表示sale-purchase表的状态,返回最后一个发票号,然后我在新记录中加1。
但我遇到的问题是,在执行 where estado = 'usado' 时,它不会影响我,因为无论条件如何,我都会采用最大的发票编号。
SELECT num_factura
FROM factura f
LEFT JOIN venta v ON v.id_factura = f.id_factura
WHERE estado = 'usado'
GROUP BY num_factura
ORDER BY num_factura DESC LIMIT 1;
我得到以下结果
+---------------+-------------+
| num_factura | id_factura |
+---------------+-------------+
| 3 | 5 |
+---------------+-------------+
我想要这个结果,因为这个结果是 estado = 'usado' 的最后一个结果
+---------------+-------------+
| num_factura | id_factura |
+---------------+-------------+
| 2 | 2 |
+---------------+-------------+
【问题讨论】:
-
GROUP BY没有聚合的目的是什么?了解如何正确使用GROUP BY。