CREATE TABLE emp(id INT PRIMARY KEY,NAME VARCHAR(11),dep_id INT ,salary INT); CREATE TABLE dept(id INT PRIMARY KEY,NAME VARCHAR(11),parentid INT); 获取各部门人数信息: SELECT e.dep_id,d.name,COUNT(e.dep_id) FROM emp e,dept d WHERE e.dep_id=d.id GROUP BY e.dep_…
获取分组后取某字段最大一条记录 方法一:(效率最高) select * from test as a where typeindex = (select max(b.typeindex) from test as b where a.type = b.type ); 方法二:(效率次之) select a.* from test a, (select type,max(typeindex) typeindex from test group by type) b where a.type = b…
MySQL获取分组后的TOP 1和TOP N记录 有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MySQL没有这些函数,没有直接的方法可以查出来,可通过以下的方法来查询. 准备工作 测试表结构如下: root:test> show create table test1\G *************************** 1. row *************************** T…
SELECT DATE_FORMAT(releaseDate,"%Y年%m月") AS dates,COUNT(*) FROM t_diary GROUP BY DATE_FORMAT(releaseDate,"%Y年%m月") ORDER BY DATE_FORMAT(releaseDate,"%Y年%m月") DESC ;releaseDate 日期 t_diary表名 DATE_FORMAT();按照格式对某个日期操作ORDER BY 排序…
有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MySQL没有这些函数,没有直接的方法可以查出来,可通过以下的方法来查询. 准备工作 测试表结构如下: root:test> show create table test1\G *************************** 1. row *************************** Table: test1 Create Table:…
小燕子,哈哈哈哈~~~~~~~~~~ 相关子查询是指引用了外部查询列的子查询,即子查询会对外部查询的每行进行一次计算. 举个例子 root:test> show create table test1\G . row *************************** Table: test1 Create Table: CREATE TABLE `test1` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) DEFAULT NULL, `course`…
https://www.cnblogs.com/Yiran583/p/6743870.html select * from test1 a where 2 > (select count(*) from test1 where course=a.course and score>a.score) 自己的理解: 先取出一个score,通过子查询去取同一个表里的所有score去和这个score做对比: 如果子查询找不出比a.score大的,即符合条件的count=0,那么此时a.score就是最大…
1,首先,我们在ApplicationContext.xml中会写下下面类的标示: <bean id="helloword" class="com.xt.fristspring.HelloWord"> <property name="name" value="***Helloword类方法进行...."></property> </bean> 2,然后我们会在Main方法中获取s…
分组后,统计记录条数: SELECT num,count(*) AS counts from test_a GROUP BY num; 查询结果如下: 对num去重后的数量的统计: SELECT count(t.counts) FROM ( SELECT num,count(*) AS counts from test_a GROUP BY num ) AS t; SELECT count(DISTINCT num) AS count FROM test_a; 它俩结果一样,都是5:只是一个是子…
-- 根据编号分组取第一条数据 select * from table t where t.no=(select max(no) from table t1 where t1.no=t.no) -- 根据编号分组后取第一条数据 SELECT * FROM (SELECT ROW_NUMBER() OVER (partition BY no ORDER BY no) rowId,* from table) t WHERE rowId=1…