假设现在有如下N条记录 表明叫article
id author title
1 aaa AAA
2 bbb BBB
3 ccc CCC
4 ddd DDD
5 eee AAA
现在想从这5条记录中查询所有title不重复的记录
select distinct title,author from article 这样是不可以的 因为distinct只能作用于一个字段
想请教应该怎么写
id author title
1 aaa AAA
2 bbb BBB
3 ccc CCC
4 ddd DDD
5 eee AAA
现在想从这5条记录中查询所有title不重复的记录
select distinct title,author from article 这样是不可以的 因为distinct只能作用于一个字段
想请教应该怎么写
解决方案 »
- mysql里存储经纬度,如何根据某个经纬度找到最近的几个点
- php写入mysql中文乱码
- sql联查获取最大的一整条数据
- mysql 查询问题
- 开发新系统准备用MYSQL想知道一些问题常用MYSQL的兄弟们帮帮忙
- Mysql有没有取得当前系统时间的c API啊?在线等待。。。。。。。
- 可以根据数据库的规模算出增加索引之后查询效率的提升幅度么?
- linux下面的mysql数据库,如何使root远程访问数据库??
- MySQL 案例库sakila如何加载到数据库中
- 求高手帮我分析下mysql错误日志,经常崩毁
- select concat(400,'aaa') 要是连接中文的话 select concat(400,'呵呵')也没问题 可是问题在这里
- sql 问题
inner join
(select title from tt group by title having count(*)=1) b
on a.title=b.title
from article
group by title
我刚才试了一下这么写 达到我的要求了 select distinct title,author from article group by title
大家还有什么好方法吗
inner join
(select title from tt group by title having count(*)=1) b
on a.title=b.title条件应该写完全就行了。如果title和author完全相同,用distinct去掉就行了。
select a.* from book a right join (
select max(id) id from book group by title) b on b.id = a.id
where a.id is not null
其实就2步
1 select max(id) id from book group by title
拿到所有的按照title分组的最大id,这样能保证得到的id里不会有重复的title.2 以这些id为基础,连接对应的表数据就行了。
不要用in () 用 join的性能更好,同样,主键上一定得有索引。
如果title上有索引的话,显然你的方法select distinct title,author from article group by title; 比较好。
select distinct title,author from book group by title;这个效率明显更高,只不过不能出现id了,呵呵呵!如果这个表还有其它的字段,那么使用id 做一次外连接的效率会高一些。