我有一個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