檢索 Oracle 中每個唯一使用者 ID 的最大值
本指南示範如何有效地從 Oracle 表中提取與每個不同使用者 ID 關聯的最大值。 假設一個表格的結構如下:
<code>UserId, Value, Date</code>
目標是檢索 UserId
及其對應的 Value
,其中 Date
是每個使用者最新的。
這裡有一個有效的 Oracle SQL 查詢來實現此目的:
<code class="language-sql">SELECT t1.* FROM mytable t1 LEFT OUTER JOIN mytable t2 ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date") WHERE t2.UserId IS NULL;</code>
此查詢使用 LEFT OUTER JOIN
將 mytable
(別名為 t1
)中的每一行與具有相同 t2
的所有其他行(別名為 UserId
)進行比較。連接條件 t1."Date" < t2."Date"
確保僅考慮日期較晚的行。
WHERE t2.UserId IS NULL
子句過濾結果。 t2.UserId
為 NULL
的行表示不存在具有相同 UserId
和更晚的 Date
的其他行。 因此,這些行代表每個使用者的最大日期。
範例:
如果mytable
包含以下數據:
UserId | Value | Date |
---|---|---|
1 | 5 | 2023-03-08 |
1 | 10 | 2023-03-15 |
2 | 3 | 2023-04-01 |
2 | 7 | 2023-04-10 |
查詢將回傳:
UserId | Value | Date |
---|---|---|
1 | 10 | 2023-03-15 |
2 | 7 | 2023-04-10 |
這種方法非常高效,並且不需要子查詢或視窗函數,使其成為 Oracle 資料庫的強大解決方案。
以上是如何找出 Oracle 表中每個不同使用者 ID 的最大值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!