Mariadb

僅選擇多個值的最後一條記錄

  • May 17, 2021

我有一個名為“會話”的表,其中有 4 列,如下所示

id  name s_time f_time
01  abc  10.15  10.45
02  abc  11.05  11.55
03  abc  12.18  13.46
04  abc  15.12  16.53
05  def  10.01  12.58
06  def  14.06  16.51
07  def  17.43  18.54
08  xyz  09.45  12.36
09  xyz  14.51  15.57
10  xyz  16.23  18.01

我怎樣才能得到f_time每個的最後一個name

我需要的是:

name f_time
abc  16.53
def  18.54
xyz  18.01

我正在嘗試的是:

select name,f_time 
from sessions 
where name in ('abc','def','xyz') 
order by id DESC LIMIT 1;

但我只得到名字的完成時間。

MariaDB 10.1.37

給你的範例數據應該這樣做。

SELECT name, max(f_time) AS f_time
FROM sessions 
WHERE name IN ('abc','def','xyz') 
GROUP BY name 
ORDER BY name;

如果您需要f_time根據其他列選擇它會變得混亂。

在 Postgresql 中,您可以使用distinct onSQL 擴展。

SELECT DISTNICT ON (name)
   name, f_time
FROM sessions 
WHERE name IN ('abc','def','xyz') 
ORDER BY name, id desc;

我認為還有一種使用視窗功能的方法

引用自:https://dba.stackexchange.com/questions/225342