我有一个MySQL声明是这样的:选择最大值似乎没有工作,以避免重复
Select myId, valueChar, initialDate from t1
inner join t2 on t1.id=t2.id
inner join t3 on t1.id=t3.id and deleted<>1
inner join t4 on t4.id=t3.id
inner join t5 on t4.id=t2.id and module='XXX'
inner join t6 on t6.id=t5.id
inner join t7 on t7.id=t6.id and valueChar like 'AB%'
这将返回
身份识别码的charValueinitialDate
XX7334HDABY2015-09-01
ZY8754UDABZ2015年11月21日
BB7777AAABD2016年7月11日
BB7777AAABE2016年12月1日
正如你所看到的,所有的行都不一样ID,但有一个id与不同的char值重复(有可能)。我需要在这种情况下总是使用最大的initialDate。
这应返回
身份识别码的charValueinitialDate
XX7334HDABY2015年9月1日
ZY8754UDABZ2015年11月21日
BB7777AAABE2016年12月1日
要做到这一点,我在上面的语句与max(initialDate)
尝试,但似乎因为它混合两个寄存器不工作,返回正确的ID,正确的initialDate但与其他行的charValue ...
这样做的最佳方法是什么?
编辑
我尝试这样做:
and t4.id=(
select max(t42.id)
from t4 t42
inner join t3 t32 on t42.id = t32.id
inner join t2 t22 on t22.id=t32.id
)
但现在只返回一个valuew ...
我已经固定在T4的错误,这是一个错字。如果我使用group by myId它不起作用,返回完全一样... initialDate在t6上。你是什么意思,我必须找出最大起始日期的ID? – Maik
我编辑了这个问题,我以为我应该这样做,但不起作用... – Maik