例如现在有如下记录:
id name make amount
1 鼠标 双飞燕 4
2 鼠标 双飞燕 12
3 鼠标 双飞燕 3
4 键盘 联想 6
5 键盘 联想 5
6 显示器 惠普 3
7 显示器 惠普 6我现在祥获得id为3,5,7的记录(也就是每种类型的最后一条记录),请问sql语句如何写?谢谢!
id name make amount
1 鼠标 双飞燕 4
2 鼠标 双飞燕 12
3 鼠标 双飞燕 3
4 键盘 联想 6
5 键盘 联想 5
6 显示器 惠普 3
7 显示器 惠普 6我现在祥获得id为3,5,7的记录(也就是每种类型的最后一条记录),请问sql语句如何写?谢谢!
(
SELECT MAX(id) FROM [表名] GROUP BY name,make
)
(
id int,
name nvarchar(10),
make nvarchar(10),
amount int
)
INSERT INTO a
SELECT
1, N'鼠标 ' , N'双飞燕' , 4 UNION SELECT
2, N'鼠标 ' , N'双飞燕' , 12 UNION SELECT
3, N'鼠标 ' , N'双飞燕' , 3 UNION SELECT
4, N'键盘 ' , N'联想 ' , 6 UNION SELECT
5, N'键盘 ' , N'联想 ' , 5 UNION SELECT
6, N'显示器', N'惠普 ' , 3 UNION SELECT
7, N'显示器', N'惠普 ' , 6SELECT a.* FROM a inner join ( select max(id) as 'id',name from a group by name ) as b on a.id = b.idid name make amount
----------- ---------- ---------- -----------
3 鼠标 双飞燕 3
5 键盘 联想 5
7 显示器 惠普 6(3 row(s) affected)
--借用测试数据.
create table a
(
id int,
name nvarchar(10),
make nvarchar(10),
amount int
)
INSERT INTO a
SELECT
1, N'鼠标 ' , N'双飞燕' , 4 UNION SELECT
2, N'鼠标 ' , N'双飞燕' , 12 UNION SELECT
3, N'鼠标 ' , N'双飞燕' , 3 UNION SELECT
4, N'键盘 ' , N'联想 ' , 6 UNION SELECT
5, N'键盘 ' , N'联想 ' , 5 UNION SELECT
6, N'显示器', N'惠普 ' , 3 UNION SELECT
7, N'显示器', N'惠普 ' , 6
select * from a T where not exists(select 1 from a where name = T.name and id >T.id)/*
result
------------
id name make amount
3 鼠标 双飞燕 3
5 键盘 联想 5
7 显示器 惠普 6*/drop table a