【发布时间】:2020-09-22 05:35:55
【问题描述】:
所以我需要显示我的所有客户以及相关的预订号(如果没有预订,则为空),而不会出现重复的客户。如果客户有很多预订,我只需要显示最近的预订日期。我不明白为什么我的查询不起作用。
这是做什么的:http://sqlfiddle.com/#!9/df0455/19
SELECT c.name, x.number, x.start_date
FROM customer c
LEFT JOIN
(SELECT b.customer_id, b.number, b.start_date
FROM booking b
INNER JOIN (
SELECT customer_id, MIN(ABS(TIME_TO_SEC(TIMEDIFF(NOW(), start_date)))) as mindiff
FROM booking
GROUP BY customer_id
) nearest ON b.customer_id = nearest.customer_id AND ABS(TIME_TO_SEC(TIMEDIFF(NOW(), start_date))) = mindiff
) AS x ON c.id = x.customer_id
实际上Paul显示了3次,只需显示一次Paul与最近的预订号booking-1 2019-11-05 21:45:00
希望你能帮到我
【问题讨论】:
标签: mysql sql date join greatest-n-per-group