查找某个字段最大值的记录 SQL 语句
2010-08-18 11:11
477 查看
查找某个字段最大值的记录 MS SQL
[align=center] [/align]某个字段查找最大值的记录.
select table_name.* from table_name,(select max(price) as price,pid from table_name group by pid) as table_name_temp where table_name_temp.price=table_name.price and table_name_temp.pid=table_name.pid;
--SQL code
create table lk1 (
uid int,
pid int,
price int,
`time` date
)engine=myisam;
insert into lk1 values
(1, 1, 100, '2007-07-01'),
(1, 2, 150, '2007-07-02 '),
(2, 1, 110, '2007-07-03 '),
(3, 1, 120, '2007-07-04 '),
(4, 2, 180, '2007-07-04 '),
(3, 2, 170, '2007-07-04 '),
(6, 3, 130, '2007-07-04 ');
select * from lk1 where price in (select max(price) from lk1 group by pid) group by pid;
--结果1:
query result(3 records)
uid pid price time
3 1 120 2007-07-04
4 2 180 2007-07-04
6 3 130 2007-07-04
truncate table lk1;
insert into lk1 values
(1, 1, 200, '2007-07-01'),
(1, 2, 200, '2007-07-02 '),
(2, 1, 110, '2007-07-03 '),
(3, 1, 120, '2007-07-04 '),
(4, 2, 180, '2007-07-04 '),
(3, 2, 170, '2007-07-04 '),
(6, 3, 130, '2007-07-04 ');
select * from lk1 where price in (select max(price) from lk1 group by pid) group by pid;
--结果2:
query result(3 records)
uid pid price time
1 1 200 2007-07-01
1 2 200 2007-07-02
6 3 130 2007-07-04
根据mysql的手册上面找到一个查询,修改了一下发现也可以实现,但是并不理解什么意思,不知道有没有人给解释一下
SQL codeSELECT *
FROM lk1 l1
WHERE price = (
SELECT MAX( l2.price )
FROM lk1 l2
WHERE l1.`pid` = l2.`pid` ) ;
--SQL code
create table lk1 (
uid int,
pid int,
price int,
`time` date
)engine=myisam;
insert into lk1 values
(1, 1, 100, '2007-07-01'),
(1, 2, 150, '2007-07-02 '),
(2, 1, 110, '2007-07-03 '),
(3, 1, 120, '2007-07-04 '),
(4, 2, 180, '2007-07-04 '),
(3, 2, 170, '2007-07-04 '),
(6, 3, 130, '2007-07-04 ');
select * from (select * from lk1 order by price desc) T group by pid;
--结果1:
query result(3 records)
uid pid price time
3 1 120 2007-07-04
4 2 180 2007-07-04
6 3 130 2007-07-04
truncate table lk1;
insert into lk1 values
(1, 1, 200, '2007-07-01'),
(1, 2, 200, '2007-07-02 '),
(2, 1, 110, '2007-07-03 '),
(3, 1, 120, '2007-07-04 '),
(4, 2, 180, '2007-07-04 '),
(3, 2, 170, '2007-07-04 '),
(6, 3, 130, '2007-07-04 ');
select * from (select * from lk1 order by price desc) T group by pid;
--结果2:
query result(3 records)
uid pid price time
1 1 200 2007-07-01
1 2 200 2007-07-02
6 3 130 2007-07-04
insert into lk1 values
(4, 3, 200, '2007-07-05 '),
(5, 3, 210, '2007-07-05' );
select * from (select * from lk1 order by price desc) T group by pid;
--结果3:
query result(3 records)
uid pid price time
1 1 200 2007-07-01
1 2 200 2007-07-02
5 3 210 2007-07-05 阅读全文
类别:默认分类 查看评论
相关文章推荐
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- Sql语句 表中相同的记录(某个字段)只显示一条,按照时间排序显示最大或最小
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- SQL 分组后获取其中一个字段最大值的整条记录
- SQL查询一个表中类别字段中Max()最大值对应的记录
- 查询同一表内多字段同时重复记录的SQL语句(转)
- T-Sql - 数据分租求最大指定字段最大的记录
- 用SQL语句查询数据库中某一字段下相同值的记录方法
- 查询同一表内多字段同时重复记录的SQL语句
- 查询同一表内多字段同时重复记录的SQL语句
- 查询同一表内多字段同时重复记录的SQL语句
- 合并多条记录的同一字段值SQL语句
- 常用sql语句之删除或查询单个字段重复数据的记录
- 要查数据表中第30到40条记录,有字段id,但是id并不连续。如何写sql语句?
- 按某一字段取无重复记录sql语句
- 查询同一表内多字段同时重复记录的SQL语句
- 查询同一表内多字段同时重复记录的SQL语句
- SQL语句修改多条记录某一字段的值
- 查询同一表内多字段同时重复记录的SQL语句
- 求每个分组里面的最大值对应的记录的sql语句