Mariadb
僅選擇多個值的最後一條記錄
我有一個名為“會話”的表,其中有 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 on
SQL 擴展。SELECT DISTNICT ON (name) name, f_time FROM sessions WHERE name IN ('abc','def','xyz') ORDER BY name, id desc;
我認為還有一種使用視窗功能的方法