这在MYSQL中有效:
SELECT hi_Historie_id,
hi_Klus_id,
hi_Datum_gedaan,
hi_Prijs,
hi_Voldaan,
hi_Datum_voldaan,
hi_Voldaan_via,
max(hi_next_date),
hi_Opmerking
FROM Historie
GROUP BY hi_Klus_id
这样可以得到正确的结果:所有带有
hi_Klus_id
的行以及最新的日期。但是比起我将与另一个表进行联接:
LEFT OUTER JOIN Glazenwassen ON Historie.hi_Klus_id = Glazenwassen.gw_Klus_id
WHERE Historie.hi_next_date <= CURDATE()
这给出了错误
#1064
。谁能解释我为什么?
最佳答案
我的建议是创建一个子查询以返回MAX(hi_next_date)
,然后将该结果加入到Historie
和Glazenwassen
表中:
select h.hi_Historie_id,
h.hi_Klus_id,
h.hi_Datum_gedaan,
h.hi_Prijs,
h.hi_Voldaan,
h.hi_Datum_voldaan,
h.hi_Voldaan_via,
h.hi_next_date,
h.hi_Opmerking
from Historie h
inner join
(
select max(hi_next_date) hi_next_date, hi_Klus_id
from Historie
group by hi_Klus_id
) h2
on h.hi_Klus_id = h2.hi_Klus_id
and h.hi_next_date = h2.hi_next_date
left join Glazenwassen g
on h.hi_Klus_id = g.gw_Klus_id
where h.hi_next_date <= CURDATE()
当您将子查询连接到
Historie
表时,您将希望同时在hi_next_date
和hi_Klus_id
上进行连接。