從表中選擇最新的結果,我有如下表:使用SQL查詢
從select
聲明我要的是每個policy
最新的唯一行(綠色)。部分原因policy
信息將從前一天(所有policies
將不會在同一天發佈)。
在這種情況下,ACB1
已將她的last names
和amounts
更改。
從表中選擇最新的結果,我有如下表:使用SQL查詢
從select
聲明我要的是每個policy
最新的唯一行(綠色)。部分原因policy
信息將從前一天(所有policies
將不會在同一天發佈)。
在這種情況下,ACB1
已將她的last names
和amounts
更改。
這將通過ID列獲得每個策略的最新行:
SELECT id, policy, first, last, amount, created
FROM yourtable yt
INNER JOIN
(SELECT policy,MAX(id) as id
FROM yourtable
GROUP BY policy) maxid ON yt.policy = maxid.policy
AND yt.id = maxid.id
使用row_number
窗函數:
select * from
(select *, row_number() over(partition by policy order by id desc) rn from TableName) t
where rn = 1
我會使用這種技術,因爲它更清晰。另外,我們應該檢查這個查詢的執行計劃和被接受的答案的執行計劃,但我相信這應該會帶來更好的性能。 – gotqn
也許,如果,而不是從數據庫中選擇所有字段,你做一個where ID=MAX()
選擇最大的ID。
所以你會:
SELECT `id`,`firstname`,`lastname`,`policy`,`amount`,`created`
FROM `tablename` WHERE `id`=MAX()
你嘗試什麼SQL查詢到目前爲止,什麼是輸出? – sfrutig