1.建立一張test表,表結構如下
create
table test (
id int(11
)not
null
, name varchar
(255
)not
null
,type
varchar
(255
)not
null
, create_time timestamp
,primary
key(id)
);
2.插入幾條測試資料
insert
into test values(1
,'t恤衫'
,'衣服'
,'2020-04-04 20:34:50');
insert
into test values(2
,'菜刀'
,'廚房用具'
,'2020-04-04 20:33:40');
insert
into test values(3
,'圖書釘'
,'辦公用品'
,'2020-04-04 19:32:50');
insert
into test values(4
,'運動t恤'
,'衣服'
,'2020-04-04 17:32:43');
insert
into test values(5
,'擦菜板'
,'廚房用具'
,'2020-04-04 20:32:22');
insert
into test values(6
,'筆'
,'辦公用品'
,'2020-04-04 21:34:56'
);
3.先將資料進行group by分組,再進行內聯結查詢
select
t1.*from
test as t1
inner
join
(select
type
,max
(create_time)
as max_create_time
from
test
group
bytype
)as t2 on t1.
type
= t2.
type
and t1.create_time = t2.max_create_time;
SQL 按照最新時間分組
表名 bp acctcurbalance 表說明 當日餘額表 欄位名型別 是否可空 描述索引 idbigintn主鍵 accountid bigint n賬戶id currencycode varchar 50 n幣種 balance decimal 22,2 n餘額 truebalancedate...
sql 分組後重複資料取時間最新的一條記錄
max id 注意id必須使用聚合函式max pid,max time as desc 降序是為了where keyid 1 1是固定值第一條 如果公升序由於不知道每組多少條where中keyid就無法過濾了 as keyid,drop table if exists tmptable 存在表則刪除...
分組取最新記錄的SQL
經常遇到這樣的情況,要取得所有客戶的最新交易記錄,讀取 所有瀏覽者最後一次訪問時間。乙個客戶只讀取最新的一次記錄,相同,大部分的人首先想 到的就是排除所有記錄,相同的只取一條。用distint,但是distint只能取到乙個欄位的值。所以使用distint就不能讀取 出所有的情況。下面是一條正確的語...