mysql数据库,根据id取每个id相对应钱数第二多的项目?问大神怎么写sql语句,要简单易懂的。谢谢。急
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库,根据id取每个id相对应钱数第二多的项目?问大神怎么写sql语句,要简单易懂的。谢谢。急相关的知识,希望对你有一定的参考价值。
SELECT * from tmp where total in(SELECT max(total) from tmp where total not in(SELECT max(total) from tmp GROUP BY id)GROUP BY id)
这是我建的表tmp,sql是可以取到每个id花钱第二的项目
结果:
看不清图片,sql看不懂的再提问
你确定你可以取到?我把你sql语句的表和字段换成我这边的,还是多条啊
追答你把你结果发给我看看
追问不太可能呀,我刚在我那张表又加了几条数据都可以的呀
有些怀疑你执行SQL只选择部分执行而已
不然我把我的表导给你?
好吧,我发现bug了,不好意思
追问大神,搞定了吗?
追答搞不定呀,我再试试
SELECT * from (SELECT * from tmp where i not in (select a.i from tmp as a where total = (select max(total) from tmp where a.id=id))
) as t where total=(SELECT max(total) from (SELECT * from tmp where i not in (select a.i from tmp as a where total = (select max(total) from tmp where a.id=id))
) as y where t.id=y.id)
我这i是表key来的
这可以的你看看能不能简化咯
DROP TABLE IF EXISTS `tmp`;CREATE TABLE `tmp` ( `i` int(3) NOT NULL AUTO_INCREMENT, `id` int(3) DEFAULT NULL, `typeid` varchar(3) DEFAULT NULL, `typename` varchar(20) DEFAULT NULL, `total` int(11) DEFAULT NULL, PRIMARY KEY (`i`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;-- ------------------------------ Records of tmp-- ----------------------------INSERT INTO `tmp` VALUES ('1', '343', '08', '家用电器', '20540');INSERT INTO `tmp` VALUES ('2', '343', '06', '服装', '10920');INSERT INTO `tmp` VALUES ('3', '343', '07', '金属', '2250');INSERT INTO `tmp` VALUES ('4', '344', '08', '家用电器', '7680');INSERT INTO `tmp` VALUES ('5', '344', '07', '金属', '3200');INSERT INTO `tmp` VALUES ('6', '344', '06', '服装', '200');INSERT INTO `tmp` VALUES ('7', '343', '05', '生活日常', '12346');INSERT INTO `tmp` VALUES ('8', '343', '09', '餐饮', '1290');INSERT INTO `tmp` VALUES ('9', '344', '09', '餐饮', '12346');INSERT INTO `tmp` VALUES ('10', '344', '05', '生活日常', '7680');
这是表结构和数据
收到请回应一下
参考技术A select cgrant_id,sum(totalExpense) as total from table group by cgrant_id图片看不太清楚,字段名和数据表名,你自己再做相应改变追问
不是根据每个id进行分组,你理解错误
如何用SQL SERVER取分组数据第一条
参考技术A根据table1_id进行分组所得结果:
select * from (select a.id as a_id,a.name,a.time,a.content,b.id as b_id,b.user from table1 a inner join table2 b on a.id = b.table1_ID) new_tbl where b_id in (select min(id) from table2 group by table1_ID)
扩展资料:
注意事项
在SQL Server数据库中,使用top关键字:SELECT TOP number|percent column_name(s) FROM table_name
在MySQL数据库中,使用LIMIT关键字:SELECT column_name(s) FROM table_name LIMIT number
例子:SELECT * FROM Persons LIMIT 1
select bookName from book where price > 20 limit 1;
limit 1;
or
limit 0,1;
在Oracle数据库中,使用ROWNUM关键字:
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
例子:SELECT * FROM Persons WHERE ROWNUM <= 1
以上是关于mysql数据库,根据id取每个id相对应钱数第二多的项目?问大神怎么写sql语句,要简单易懂的。谢谢。急的主要内容,如果未能解决你的问题,请参考以下文章
java 怎样查询MYSQL数据库中的数据;根据id字段查询,获取id 对应的一行数据,并显示 在标签上。