我有以下代码:
SELECT DISTINCT m.solde_total_client
,c.client_nom
,co.contenant_nom
FROM `mouvement` m, `client` c, `contenant` co
WHERE c.client_id = m.client_id
AND co.contenant_id = m.contenant_id
ORDER BY m.movement_date DESC
LIMIT 1;
结果,我从一位客户那里获得了一笔总销量。但我想为每个客户的每个内容获得一个。 (但它仍然需要是最后一个日期)
Leclerc | Geobox | 50
SuperU | Box | 40
...
sold_total_client 是客户在一次出货后的情况,有好几批出货,每一次售出都会更新,所以最后一个日期是实际售出的。所以我必须得到每个客户端的每个内容的最后一步。
最佳答案
您可以尝试通过 client_id、contenant_id 对 max_date 组使用子查询
SELECT
m.solde_total_client,
m.`mouvement_date`,
c.client_nom,
co.contenant_nom
FROM
`mouvement` m
INNER JOIN
(SELECT
MAX(mouvement_date) max_date, client_id, contenant_id
FROM
`mouvement`
GROUP BY
client_id, contenant_id) t ON t.client_id = m.client_id
AND m.contenant_id = t.contenant_id
AND t.max_date = m.`mouvement_date`
INNER JOIN
`client` c ON c.client_id = m.client_id
INNER JOIN
`contenant` co ON co.contenant_id = m.contenant_id
ORDER BY
m.`mouvement_date`
关于mysql - 根据不同的条件从 SQL 查询中获取多个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57390978/