我一直试图在没有发帖的情况下解决这个问题,但我找不到合适的答案......
我有一个销售表和一个预约表。 两者中都有一个列 sale_id。 APPOINTMENT 中有 do_by(date) 列,每个 sale_id 可以有多个条目。
我需要的是匹配 sale_id 的下一个预约。 某事。像这样:
appointment_id | sale_id | do_by
--------------------------------------
1365 | 160 | 27.05.2014
2546 | 173 | 29.05.2014
5483 | 265 | 01.06.2014
到目前为止,我的查询只给了我所有的最小的 do_by...
SELECT a.appointment_id, a.do_by, s.sale_id
FROM [Askus7].[CRM7].[APPOINTMENT] a, [Askus7].[CRM7].[SALE] s
WHERE (s.sale_id = a.sale_id) AND a.do_by =
(
SELECT MIN(a2.do_by)
FROM [Askus7].[CRM7].[APPOINTMENT] a2, [Askus7].[CRM7].[SALE] s2
WHERE s2.sale_id = a2.sale_id
AND s.sale_id = a.sale_id
)
感谢您的帮助!
最佳答案
类似的事情? (未经测试)
SELECT a.appointment_id, ms.do_by, a.sale_id
(
SELECT a2.sale_id as sale_id, MIN(a2.do_by) as do_by
FROM [Askus7].[CRM7].[APPOINTMENT] a2 JOIN [Askus7].[CRM7].[SALE] s2
ON a2.sale_id=s2.sale_id
GROUP BY a2.sale_id
)ms
JOIN [Askus7].[CRM7].[APPOINTMENT] a
ON a.sale_id = ms.sale_id and a.do_by = ms.do_by;
警告:如果您没有对 do_by 列建立索引,并且您的 APPOINTMENT 表很大,则查询可能会非常慢。
关于mysql - SQL 查询给出每场比赛的最小日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23884612/