以下是一個示例數據集。SQL獲取另一個字段最大的最大主鍵
shareId mode shareLevel targetId targetItemId
26 1 5 0 2
32 1 5 0 21
33 2 1 1 21
34 1 3 0 21
我試圖把它恢復爲我的結果:
shareId mode shareLevel targetId targetItemId
26 1 5 0 2
33 2 1 1 21
*因此,我需要的 'shareId' 字段。
*通過TargetItemId組,所以我只能得到一個單一的記錄對於給定targetItemId
*,但我需要的是具有最高的模式值,所以在分組時,我想用MAX場(備案模式)
這裏是我試過,但它不工作:
select shareId FROM shares group by targetItemId having mode = MAX(mode)
它只返回:
shareId mode shareLevel targetId targetItemId
26 1 5 0 2
所以基本上,我如何獲得每個唯一targetItemId的shareId,但我想要的行爲一個給定的targetItemId具有最大的模式。我該怎麼做呢?
你怎麼確定你想記錄#26,而不是#33或#34 ?從你的描述來看,它們似乎都能平等地滿足你的要求。 – ruakh
另外 - 你應該指出你正在使用哪個SQL引擎(PostgreSQL?MySQL?SQL Server?Oracle?),因爲它們對分析功能的支持都不相同。 – ruakh