NutzCN Logo
问答 SQL 求分组之后每组中某列最大的那条记录
发布于 218天前 作者 LuoYY 144 次浏览 复制 上一个帖子 下一个帖子
标签: sql

论文数据库字段如下

title, author, date

怎么查出来某个时间之前各个作者的最新文章

我能想到的SQL语句如下

SELECT
	*
FROM
	t_article
WHERE
	(author, date) IN (
		SELECT
			author,
			MAX(date)
		FROM
			t_article
		WHERE
			date < 20161120
		GROUP BY
			author
	)

简单测试了一下270万条的数据库
Navicat执行一个查询的时间为60多秒
求问下有没有更加高效的写法

7 回复

先分组查出来,然后遍历结果集,逐一select

@wendal 没太明白,能就这个例子写个SQL我参考一下么,麻烦您了

@wendal 你的意思是先运行以下?

		SELECT
			author,
			MAX(date)
		FROM
			t_article
		WHERE
			date < 20161120
		GROUP BY
			author

然后得到一个List<>,然后根据逐条去数据库匹配得到文章的List<>?

@wendal 这样逐条的去查询数据库连接池会不会压力很大?会不会产生很多的连接数?还是说只产生一个连接数?我的应用出现了数据库连接池占用过高,比如一次 dao.insert(T obj) 会建立一个连接,那么一次 dao.fastInsert(List objs) 也只建立一个连接么,对于建立的连接,是命令执行完了就会自动释放么?

先测试一下

添加回复
请先登陆
回到顶部